【问题标题】:Partial .csproj Files部分 .csproj 文件
【发布时间】:2008-10-01 11:12:33
【问题描述】:

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

【问题讨论】:

    标签: c# csproj


    【解决方案1】:

    您不能拥有多个主 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 Import 功能,您可以拥有部分 csproj 文件,其中每个文件都包含主项目(在我的示例中为 project.csproj)将使用的定义。


    当您打开已更改的解决方案或项目文件时,Visual Studio 将显示项目的安全警告对话框。选择Load Project Normal选项并按OK。稍后再次打开解决方案时,将不会显示警告,因为 Load Project Normal 的配置存储在 suo 文件中。

    【讨论】:

    • +1 这适用于 Visual Studio 2022,并且似乎没有显示任何警告(我将某些项目设置提取到多个 .targets 文件中作为 recommended here 并将它们放在与导入它们的主项目文件)。
    【解决方案2】:

    是的,您可以将信息拆分到多个文件中。您可以使用Import Element (MSBuild)

    请注意,如果您尝试打开包含其他项目文件的项目文件,Visual Studio 会给您annoying security warning

    来自 MSDN 的有用链接:

    How to: Use the Same Target in Multiple Project Files

    请注意,外部文件按约定具有 .targets 扩展名。

    【讨论】:

    • 您可以选择正常加载项目,下次打开项目时不会出现警告。这存储在 suo 文件中。
    • 我知道,但是 suo 文件通常不存储在源代码管理下。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多