1

新的UWP項目(以10586或AU版本爲目標,無所謂)。 當安裝包Google.Apis 1.20(或其它版本)project.lock.json包含以下行:NuGet恢復/安裝/鎖定UWP應用程序的無效dll變體

{ 
    "version": 2, 
    "targets": { 
    "UAP,Version=v10.0": { 
     "Google.Apis/1.20.0": { 
     "type": "package", 
     "dependencies": { 
      "Google.Apis.Core": "1.20.0", 
      ...   
      "System.Threading.Tasks": "4.0.11" 
     }, 
     "compile": { 
      "lib/win81/Google.Apis.PlatformServices.dll": {}, 
      "lib/win81/Google.Apis.dll": {} 
     }, 
     "runtime": { 
      "lib/win81/Google.Apis.PlatformServices.dll": {}, 
      "lib/win81/Google.Apis.dll": {} 
     } 
     }, 

我很奇怪,爲什麼編譯/運行節點所引用的lib/win81而package itself包含netstandard1.3文件夾。

如果我安裝了Google.Apis.Core,它從此包中引用netstandard1.3個dll,而仍然從Google.Apis中獲取win81個dll。

想知道,爲什麼是這樣以及如何強制它使用netstandard1.3呢?


這裏是封裝的結構和nuspec:

Google Apis package tree

<?xml version="1.0" encoding="utf-8"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> 
    <metadata> 
    <id>Google.Apis</id> 
    <version>1.20.0</version> 
    <title>Google APIs Client Library</title> 
    <authors>Google Inc.</authors> 
    <owners>google-apis-packages</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> 
    <projectUrl>https://developers.google.com/api-client-library/dotnet</projectUrl> 
    <description>The Google APIs Client Library is a runtime client for working with Google services. 
      The library supports service requests, media upload and download, etc. 

      Supported Platforms: 

      - .NET Framework 4.5 and 4.6 

      - NetStandard1.3 

      - Windows 8 Apps 

      - Windows Phone 8 and 8.1 

      - Portable Class Libraries</description> 
    <tags>Google</tags> 
    <dependencies> 
     <group> 
     <dependency id="Google.Apis.Core" version="1.20.0" /> 
     <dependency id="Zlib.Portable.Signed" version="1.11.0" /> 
     </group> 
     <group targetFramework=".NETFramework4.5"> 
     <dependency id="log4net" version="2.0.3" /> 
     <dependency id="Google.Apis.Core" version="1.20.0" /> 
     <dependency id="Zlib.Portable.Signed" version="1.11.0" /> 
     </group> 
     <group targetFramework=".NETStandard1.3"> 
     <dependency id="Google.Apis.Core" version="1.20.0" /> 
     <dependency id="System.Collections" version="4.0.11" /> 
     <dependency id="System.Diagnostics.Debug" version="4.0.11" /> 
     <dependency id="System.IO" version="4.1.0" /> 
     <dependency id="System.IO.Compression" version="4.1.0" /> 
     <dependency id="System.Linq" version="4.1.0" /> 
     <dependency id="System.Net.Http" version="4.1.0" /> 
     <dependency id="System.Net.Primitives" version="4.0.11" /> 
     <dependency id="System.Reflection" version="4.1.0" /> 
     <dependency id="System.Runtime" version="4.1.0" /> 
     <dependency id="System.Runtime.Extensions" version="4.1.0" /> 
     <dependency id="System.Text.Encoding" version="4.0.11" /> 
     <dependency id="System.Threading" version="4.0.11" /> 
     <dependency id="System.Threading.Tasks" version="4.0.11" /> 
     <dependency id="System.Reflection.TypeExtensions" version="4.1.0" /> 
     </group> 
    </dependencies> 
    </metadata> 
</package> 

回答

0

按照Google APIs Client Library 1.20.0 NuGet包的描述中,它支持後續平臺:

  • .NET Framework 4.5和4.6

  • NetStandard1.3

  • 的Windows 8應用程序

  • 的Windows Phone 8和8.1

  • 便攜式類庫

Google APIs Core Client Library 1.20.0庫。所以我們不確定這個軟件包的所有功能是否支持UWP平臺,但是它應該適用於UWP。我不確定爲什麼你需要改變Dll的引用,如果這個軟件包可以用於UWP應用程序,如果你在使用這個軟件包構建uwp應用程序時遇到問題,請嘗試將.Net Core版本更新到5.2.2 project.json文件如下,它將成功構建,您可以嘗試繼續。

{ 
"dependencies": { 
    "Google.Apis": "1.20.0", 
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2" 
} 

無論如何,參考哪些dll取決於如何google-apis-packages隊包庫,我們不能直接改變它。 compile只是顯示目錄結構。如果你想強制改變它,你可能需要自己打包庫,詳情請參考Creating a Package。在我看來,你自己包裝可能會很挑剔,這個包可能不能用於uwp。

+0

吳,謝謝你的回答。我的問題不是關於特定的軟件包,而是總體上爲什麼NuGet選擇使用win81 lib而不是netstandard13 lib。 –

+0

@AlexSorokoletov,它取決於發佈者如何打包庫。請參考上面已經提到的創建一個包。 –

+0

不幸的是,這不是我正在尋找的答案。我有確切的圖書館和確切的目標項目。 .nu​​spec中的哪一行觸發NuGet或VS通過netstandard13使用win81庫? –