Строительные проекты на основе типа платформы

1

У меня есть мой проект, который может создавать для 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), а ошибка выводится в оператор return 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 или одна из его зависимостей. Система не может найти указанный файл.

Теги:
csproj
windows-runtime

1 ответ

1
Лучший ответ

Мне удалось выяснить этот вопрос. Мне пришлось удалить <Private>True/False</Private> из элемента <Reference> в файле csproj. Не очень уверен, но я думаю, что это привело к тому, что ранее построенная DLL была загружена во время выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню