我有一个包含多个项目的解决方案,我希望它们都能访问一组共享属性,这些属性在解决方案级别的普通文件中定义过一次。基于导入属性的MSBuild条件
这大多工作正常,使用下面的代码,我可以在BeforeBuild目标中使用导入的属性,但是我遇到的问题是我无法在条件中使用导入的属性。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CommonSettingsTarget">
<PropertyGroup>
<MyCustomProperty>Sample</MyCustomProperty>
</PropertyGroup>
</Target>
</Project>
在我的项目文件我:
<Project ToolsVersion="14.0" DefaultTargets="Build" InitialTargets="CommonSettingsTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(SolutionDir)CommonSettings.targets" />
<ItemGroup>
<EmbeddedResource Include="EmbeddedDocument.txt" Condition=" '$(MyCustomProperty)' == 'Sample' " />
</ItemGroup>
<Target Name="BeforeBuild">
<Message Text="MyCustomProperty='$(MyCustomProperty)'" Importance="high" />
</Target>
</Project>
在上,我可以看到我的进口
所以我的在解决一个文件夹中的文件CommonSettings.targets以下属性在输出窗口中显示为“MyCustomProperty ='Sample'”,这很棒,但是当它用作条件的一部分(可选地包含嵌入资源)时,条件永远不会满足。
有什么办法可以使导入的属性在条件下工作吗?
其他一些建议:如果您切换到VS 2017/MSbuild 15,您可以简单地命名导入的文件“Directory.Build.props”,它会自动导入到该级别以下的所有项目中。 –