У меня есть мой проект, который может создавать для x64, x86 и ARM (WinRT) ссылки на платформу конкретной библиотеки (также строит на x64, x86 и ARM). Для того, чтобы условно построить платформу конкретной DLL, я редактировал файл .csproj вручную, чтобы иметь элементы для тех платформ конкретной DLL, как показано ниже:Строительные проекты на основе платформы типа
<ItemGroup Condition="'$(Platform)' == 'x86'">
<Reference Include="PortablePlatform">
<HintPath>..\..\packages\LibraryName\x86\PortablePlatform.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x64'">
<Reference Include="PortablePlatform">
<HintPath>..\..\packages\LibraryName\x64\PortablePlatform.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'ARM'">
<Reference Include="PortablePlatform">
<HintPath>..\..\packages\LibraryName\ARM\PortablePlatform.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
Теперь я могу скомпилировать мое решение. Но, во время выполнения он дает ошибку при загрузке платформы конкретных библиотек DLL (PortablePlatform.dll) и ошибка возникает в обратном утверждении GetXamlType в xamlTypeInfo.g.cs:
public global::Windows.UI.Xaml.Markup.IXamlType GetXamlType(global::System.Type type)
{
if(_provider == null)
{
_provider = new global::<ABC>_App_XamlTypeInfo.XamlTypeInfoProvider();
}
return _provider.GetXamlTypeByType(type);
}
Ниже стек ошибка: Исключение типа «System.IO.FileNotFoundException» произошло в .WinRT.App.exe, но не обрабатывалось в коде пользователя Дополнительная информация: Не удалось загрузить файл или сборку 'PortablePlatform, Version = 0.1.0.0, Culture = neutral, PublicKeyToken = null или одной из его зависимостей. Система не может найти указанный файл.