Windows Phone クラス ライブラリ プロジェクトBaseProjと、このプロジェクト、プロジェクトA、Bなどを参照するいくつかの WP プロジェクトを使用したソリューションがあります。 BaseProjには LocationHelper クラスがあります。
プロジェクトAには LocationHelper クラスでコンパイルするBaseProjが必要ですが、プロジェクトBは ID_CAP_LOCATION 機能なしでビルドする必要があるため、 BaseProjのビルド時に LocationHelper クラスを含めるべきではないとします。
条件付きコンパイル シンボルを使用してこれを実現できます。問題は、プロジェクトAとBのどちらをビルドしているかに応じて、 BaseProjを適切なシンボルでビルドするにはどうすればよいかということです。
いくつかの調査の後、次の解決策を思いつきました.BaseProj.csprojに追加しました
<PropertyGroup Condition=" '$(TestProperty)'==true ">
<DefineConstants>$(DefineConstants);TEST_SYMBOL</DefineConstants>
</PropertyGroup>
B.csproj では、ProjectReference のプロパティ:
<ProjectReference Include="..\BaseProj\BaseProj.csproj">
<Project>{...}</Project>
<Name>BaseProj</Name>
<Properties>TestProperty=true</Properties>
</ProjectReference>
AではなくBTEST_SYMBOL
でビルドするときに追加する必要があると考えています。これは、MSBuild でビルドするとうまく機能します。一方、Visual Studio はこれを完全に無視します。つまり、デバッグ時とビルド スクリプトを使用してリリース ビルドを作成するときとで動作が異なります。
MSBuildとVisual Studioから必要な動作を得るにはどうすればよいですか?