У меня есть решение в Xamarin.iOS с проектом, который ссылается на очень большую DLL (привязка к очень большой родной библиотеке). Поэтому время сборки для решения очень велико. После простой модификации в любом исходном файле мне нужно дождаться ссылки. Поэтому моя идея состояла в том, чтобы исключить ссылку из проекта с использованием настраиваемого свойства, а также определить, что я буду использовать в файлах .cs, чтобы исключить код, который зависит от большой сборки. Но я не могу использовать настраиваемое условие, чтобы исключить ссылку. Следующая стратегия не будет работать для Xamarin.iOS (но будет работать в Visual Studio):Как исключить ссылку на сборку с использованием пользовательских условных свойств в проекте Xamarin.iOS
Создать файл 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 работает только для свойств $ (Конфигурация) и $ (Платформа). То есть следующий код будет включать и исключать MonoTouch в зависимости от конфигурации:
<ItemGroup>
<Reference Include="monotouch" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
Можно ли настроить ссылку на сборку в том числе с использованием своих собственных условных свойств?