csproj文件中可重用的PropertyGroup元素

Dan*_*fer 13 c# csproj visual-studio-2010

我需要在~15个项目中设置一系列属性.有没有办法将这些属性放在一个文件中,并让所有项目文件使用某种导入指令引用一个文件,而不是复制每个项目文件中的属性?

编辑:澄清一下,我在谈论<PropertyGroup>csproj文件中的元素.所有项目都需要相同的一系列<PropertyGroup>设置.这些元素设置类似DebugSymbols或的属性DefineDebug,不用于引用源文件.

Dan*_*fer 18

<Import>元素可用于此目的,类似于使用自定义目标文件的方式.

可重用文件应如下所示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <!-- Properties go here -->
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

请注意,需要具有声明的根Project元素xmlns- 如果没有它,VS将不会加载引用此文件的项目.

我已将我的属性设置保存在我的解决方案目录中,如ProjectBuildProperties.targets.

要将该文件包含在其他项目中,我已将其添加到csproj文件中:

<Import Project="$(SolutionDir)ProjectBuildProperties.targets"/>
Run Code Online (Sandbox Code Playgroud)

它的工作原理!


Loz*_*zer 6

共享属性可以放入Directory.Build.props文件中。这不需要显式导入到每个 csproj 中,这一切都由 MSBuild 负责,包括 props 文件的层次结构。文件内容示例:

<Project>
    <PropertyGroup>
        <DebugSymbols>true</DebugSymbols>
        <DefineDebug>true</DefineDebug>
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2022#directorybuildprops-and-directorybuildtargets