非常に大きな DLL (非常に大きなネイティブ ライブラリのバインディング) を参照するプロジェクトを使用して、Xamarin.iOS でソリューションを提供しています。したがって、ソリューションのビルド時間は非常に長くなります。ソースファイルを簡単に変更した後、リンクを待つ必要があります。したがって、私の考えは、カスタム プロパティを使用してプロジェクトから参照を除外し、.cs ファイルで使用する定義を作成して、大規模なアセンブリに依存するコードを除外することでした。しかし、カスタム条件を使用して参照を除外することはできません。次の戦略は、Xamarin.iOS では機能しません (ただし、Visual Studio では機能します)。
ファイル CommonProperties.prop を作成します。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LinkWithLargeAssembly>True</LinkWithLargeAssembly>
</PropertyGroup>
</Project>
つまり、重要でない場合は、LinkWithLargeAssembly を False として定義し、プロジェクトを高速にリンクできます。CommonProperties.prop は、大きなライブラリの機能に依存する任意のアセンブリにインポートできます。
プロジェクト ファイル .csproj で上記のファイルをインポートし、参照を除外してみてください (例: monotouch):
...
<Import Project="CommonProperties.prop" />
...
<ItemGroup>
<Reference Include="monotouch" Condition=" '$(LinkWithLargeAssembly)' == 'True' " />
</ItemGroup>
...
また、インポートせずにプロジェクト ファイルでプロパティ $(LinkWithLargeAssembly) を直接定義しようとしました。また、$(RootNamespace) や $(AssemblyName) などの既に定義されているプロパティを使用しようとしました。ただし、Condition 属性はプロパティ $(Configuration) および $(Platform) に対してのみ機能します。つまり、次のコードは、構成に応じてモノタッチを含めたり除外したりします。
<ItemGroup>
<Reference Include="monotouch" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
独自の条件付きプロパティを使用するなど、アセンブリ参照をカスタマイズすることはできますか?