1

新しいUWPプロジェクト(10586またはAUバージョンを対象としていません)は問題ありません。 パッケージをインストールGoogle.Apis 1.20(または他のバージョン)project.lock.jsonが含まれ、次の行:package itselfnetstandard1.3フォルダが含まれていながら、コンパイル/実行時のノードがLIB/win81を参照している理由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": {} 
     } 
     }, 

私は疑問に思って。

Google.Apis.Coreをインストールすると、このパッケージからnetstandard1.3 dllを参照していますが、まだwin81 dllをGoogle.Apisから参照しています。

なぜ、どうして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のために機能するはずです。このパッケージがUWPアプリケーションで動作することができれば、なぜDll参照を変更する必要があるのか​​分かりません。このパッケージを使用してuwpアプリケーションを構築する際に問題が発生した場合は、.NETコアバージョンを5.2.2ファイルproject.jsonを次のように作成すると、正常にビルドされ、続行することができます。

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

とにかく、どのようにgoogle-apis-packagesチームパッケージにライブラリを依存DLLの参照は、我々はそれを直接変更することはできません。 compileはディレクトリ構造を示しています。それを強制的に変更したい場合は、図書館を自分でパッケージ化する必要があります。詳細はCreating a Packageを参照してください。私の意見では、自分でパッケージを作るのは難しいかもしれません。このパッケージはuwpで使用することはできません。

+0

呉、あなたの答えをありがとう。私の質問は特定のパッケージに関するものではありませんでしたが、なぜNuGetがnetstandard13 libではなくwin81 libを使用するのが一般的でしたか? –

+0

@AlexSorokoletov、それはパブリッシャーがライブラリーをどのようにパッケージ化するかによって異なります。上記のパッケージの作成を参照してください。 –

+0

残念ながら、これは私が探している答えではありません。私は正確な図書館と正確なターゲットプロジェクトを持っています。 .nu​​specのどの行がNuGetまたはVSを起動してnetstandard13よりもwin81ライブラリを使用するのですか? –

0

Google .Net clinetライブラリは現在、UWPをサポートしていません。私たちは、2017年早くになるはずのv2リリースでUWPをサポートしたいと考えています。#787

関連する問題