Netstandard1.x项目无法安装Netstandard1.x Nuget包

21
在进行了最新的Visual Studio 2015、netcore和nuget工具的新安装后,我无法再向任何.netstandard项目安装Nuget软件包。以下是一些示例输出:
Restoring packages for 'ClassLibrary1'.
Restoring packages for c:\users\zone1\documents\visual studio 2015\Projects\ClassLibrary1\ClassLibrary1\project.json...
Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
  - monoandroid10 (MonoAndroid,Version=v1.0)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - netcore50 (.NETCore,Version=v5.0)
  - netstandard1.0 (.NETStandard,Version=v1.0)
  - netstandard1.3 (.NETStandard,Version=v1.3)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - win8 (Windows,Version=v8.0)
  - wp8 (WindowsPhone,Version=v8.0)
  - wpa81 (WindowsPhoneApp,Version=v8.1)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
  - xamarinmac20 (Xamarin.Mac,Version=v2.0)
  - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
  - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
One or more packages are incompatible with .NETStandard,Version=v1.3.
Package restore failed for 'ClassLibrary1'.

我将项目ClassLibrary1创建为可移植类库,将目标更改为netstandard1.3,并无法安装任何支持netstandard1.3的Nuget包。对于netstandard1.5和其他版本也是如此。

我尝试拉取并构建了MailKit(支持.netstandard的项目)的源代码以验证我的项目设置是否正确,但遇到了同样的问题:

Errors in C:\Users\zone1\Repos\MailKit\MailKit\MailKit.CoreFX.xproj
    Package System.Net.NetworkInformation 4.1.0 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.Net.NetworkInformation 4.1.0 supports:
      - monoandroid10 (MonoAndroid,Version=v1.0)
      - monotouch10 (MonoTouch,Version=v1.0)
      - net45 (.NETFramework,Version=v4.5)
      - netcore50 (.NETCore,Version=v5.0)
      - netstandard1.0 (.NETStandard,Version=v1.0)
      - netstandard1.3 (.NETStandard,Version=v1.3)
      - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
      - win8 (Windows,Version=v8.0)
      - wp8 (WindowsPhone,Version=v8.0)
      - wpa81 (WindowsPhoneApp,Version=v8.1)
      - xamarinios10 (Xamarin.iOS,Version=v1.0)
      - xamarinmac20 (Xamarin.Mac,Version=v2.0)
      - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
      - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
    One or more packages are incompatible with .NETStandard,Version=v1.3.

我在这里发布了更多的细节:https://github.com/NuGet/Home/issues/3433

在重新格式化为全新的Windows安装之前所有这些都是好用的。我漏掉了什么吗?


你可以尝试运行 "nuget.exe locals -clear all" 命令吗? - Eddie Chen - MSFT
这似乎解决了问题。谢谢!我将给出更详细的答案,因为这似乎是人们常见的问题。 - zone117x
3个回答

27

得益于@eddie-msft的提示,我找到了可行的解决方案。

这里下载最新的nuget命令行工具(发布此文时的版本是v3.5.0-rc1)。

然后运行以下命令:

nuget.exe locals -clear all

我确认关闭了VS并删除了任何现有的project.lock.json文件。现在一切似乎都按预期工作。

我发现这个问题会在任何安装有新版Windows/VS/工具的系统上发生,因此很可能是他们安装程序的一个漏洞。


刚刚修复了我的损坏的NuGet包安装。谢谢。 - KSF

2

针对VS 2017 - 更新版本15.3

您可以通过以下方式解决此问题

编辑.NET标准库的.csproj文件并添加以下行

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
 <TargetFramework>netstandard1.4</TargetFramework>
 <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.4' ">$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>
 </PropertyGroup>



Other stuff here
 </Project>

PackageTargetFallback 允许您使用较旧的兼容包。

https://www.cameronmoten.com/2017/08/19/fixing-xamarin-with-net-standard-in-visual-studio-2017-v-15-3/


1
看起来你的工具缺少了一些东西,错误提示并不总是很清楚。请确保你已经运行了这两个安装程序: Visual Studio 2015 Update 3(我猜你已经有了它) .NET Core 1.0.1 - VS 2015 Tooling Preview 2 我真的不认为这是一个项目文件问题,因为MailKit对你来说失败了,我怀疑你没有破坏NuGet。如果这个方法不起作用,另一个可能会给你一些有用信息的部分是运行
Dotnet restore

在项目目录中查看如何在没有Visual Studio的情况下处理它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接