複数のプロジェクトを持つソリューションがあります。ソリューションレベルで共通のファイルで一度定義された一連の共有プロパティにアクセスできるようにしたいと思います。インポートされたプロパティに基づくMSBuild条件
これはほとんどの場合、以下のコードを使用して正常に動作し、BeforeBuildターゲットでインポートされたプロパティを使用できますが、問題はインポートされたプロパティを条件で使用できないことです。
だから私は、ソリューションフォルダ内CommonSettings.targetsファイルに次のようしている:私は私のプロジェクトファイルで
<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>
、私は私のインポートを見ることができますプロパティは "MyCustomProperty = 'Sample'"というように出力ウィンドウに表示されますが、条件の一部として使用されている場合(オプションで埋め込みリソースを含める場合)、条件は決して満たされません。
インポートされたプロパティを条件で動作させる方法はありますか?あなたの状態が評価されたときにCommonSettingsTarget
がまだ実行されていないので、MyCustomProperty
がまだ定義されていない、あなたのItemGroup
として
他のアドバイス:VS 2017/MSbuild 15に切り替えると、インポートされたファイル「Directory.Build.props」に名前を付けるだけで、そのレベル以下のすべてのプロジェクトに自動的にインポートされます。 –