.csproj部分文件

时间:2020-03-06 14:58:18  来源:igfitidea点击:

是否可以将.csproj中的信息拆分为多个文件?有点像partial class功能的项目版本。

解决方案

好吧,我们可以将多个项目组合成一个大型解决方案,但是我认为这并不是我们要记住的,因为在这种情况下,每个项目都必须是一个完整的项目。

是的,我们可以将信息拆分到多个文件中。我们可以使用导入元素(MSBuild)。

请注意,如果我们尝试打开包含其他项目文件的项目文件,Visual Studio将给我们带来烦人的安全警告。

来自MSDN的有用链接:

如何:在多个项目文件中使用同一目标

请注意,按照惯例,外部文件的扩展名是.targets。

我们最多只能有一个主csproj。但是,由于csproj的底层布线是使用msbuild完成的,因此我们可以简单地将多个部分csproj相互导入。解决方案文件将看到最派生的csproj。

project1.csproj

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ....
</Project>

project2.csproj

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="project1.csproj" />
    ...
</Project>

project.csproj,这是解决方案文件引用的主要项目。

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="project2.csproj" />
    ...
</Project>

最重要的是,使用msbuild导入功能,我们可以拥有部分csproj文件,每个文件都包含主项目(在我的示例中为project.csproj)将使用的定义。

当我们打开更改的解决方案或者项目文件时,Visual Studio将显示"项目的安全警告"对话框。选择选项"正常加载项目",然后按OK。稍后再次打开解决方案时,将不会显示警告,因为"正常加载项目"的配置存储在suo文件中。