我有一個包含多個項目的解決方案,我希望它們都能訪問一組共享屬性,這些屬性在解決方案級別的普通文件中定義過一次。基於導入屬性的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」,它會自動導入到該級別以下的所有項目中。 –