1

Новый проект UWP (таргетинг 10586 или версия AU, не имеет значения). При установке пакета Google.Apis 1,20 (или другие версии) project.lock.json содержит следующие строки:NuGet восстанавливает/устанавливает/блокирует недействительный вариант dll для приложения UWP

{ 
    "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": {} 
     } 
     }, 

Я задаюсь вопросом, почему узлы компиляции/времени выполнения ссылки Библиотека/win81, а package itselfnetstandard1.3 содержит папку.

Если я установлю Google.Apis.Core, он ссылается netstandard1.3 DLLs из этого пакета и до сих пор win81 DLLs из 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. Я не уверен, почему вам нужно изменить ссылку на Dll, если этот пакет может работать для приложения UWP, если вы столкнулись с проблемами при создании приложения uwp с этим пакетом, попробуйте обновить версию .Net Core до 5.2.2 в файл следующим образом, он будет успешно создан, и вы можете попытаться продолжить.

{ 
"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

К сожалению, это не тот ответ, который я ищу. У меня есть точная библиотека и точный целевой проект. Какая строка в .nuspec запускает NuGet или VS для использования библиотеки win81 поверх netstandard13? –

0

Библиотека Google .Net clinet в настоящее время не поддерживает UWP. Мы надеемся поддержать UWP в выпуске v2, который должен быть в начале 2017 года см. #787