NuGet为UWP应用程序恢复/安装/锁定无效的DLL变体

时间:2016-12-27 05:46:16

标签: uwp nuget visual-studio-2017 google-api-dotnet-client .net-standard

新的UWP项目(针对10586或AU版本,并不重要)。 安装包Google.Apis 1.20(或其他版本)时,project.lock.json包含以下行:

{
  "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,并win81来自Google.Apis个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>

2 个答案:

答案 0 :(得分: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。在project.json文件中,如下所示,它将成功构建,您可以尝试继续。

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

无论如何,参考哪个dll取决于google-apis-packages团队如何打包库,我们无法直接更改它。 compile只显示目录结构。如果您想强制更改它,您可能需要自己打包库,详情请参考Creating a Package。在我看来,自己包装可能很挑剔,这个包可能不能在uwp中使用。

答案 1 :(得分:0)

Google .Net clinet库目前不支持UWP。我们希望在v2版本中支持UWP,该版本应该在2017年初,见#787