簡體   English   中英

根據平台類型構建項目

[英]Building projects based on platform type

我有一個可以針對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)時出現錯誤,並且在xamlTypeInfo.g.cs中的GetXamlType的return語句中引發該錯誤:

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);
        }

下面是錯誤堆棧: .WinRT.App.exe中發生類型'System.IO.FileNotFoundException'的異常,但未在用戶代碼中處理。其他信息:無法加載文件或程序集'PortablePlatform,Version = 0.1.0.0,文化=中性,PublicKeyToken =空”或其依賴項之一。 該系統找不到指定的文件。

我能夠找出問題所在。 我必須從csproj文件中的<Reference>元素中刪除<Private>True/False</Private> 不太確定,但是我認為這導致先前構建的dll在運行時加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM