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

Posted

技术标签:

【中文标题】无法为 netstandard1.x 项目安装 Netstandard1.x Nuget 包【英文标题】:Netstandard1.x Nuget packages cannot be installed for netstandard1.x projects 【发布时间】:2017-01-27 19:46:13 【问题描述】:

在使用最新的 Visual Studio 2015、netcore 和 nuget 工具进行全新的 Windows 10 安装后 - 我无法再将 Nuget 包安装到任何 .netstandard 项目。这是一些示例输出:

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”命令吗? 这似乎解决了问题。谢谢!我将对这个问题给出更详细的答案,因为它看起来是人们的常见问题。 【参考方案1】:

感谢@eddie-msft 的提示,得到了一个可行的解决方案。

从此处https://dist.nuget.org/index.html 下载最新的 nuget 命令行工具(发帖时为v3.5.0-rc1)

然后运行:

nuget.exe locals -clear all

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

我发现在任何全新安装 Windows/VS/工具的系统上都会出现此问题,因此很可能是其安装程序的错误。

【讨论】:

刚刚修复了我损坏的 nuget 包安装。谢谢【参考方案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/

【讨论】:

【参考方案3】:

您的工具中似乎遗漏了一些东西,并且错误消息并不总是最清楚的。您能否确保您已在此处运行了两个安装程序:

Visual Studio 2015 Update 3(我猜你有这个)

.NET Core 1.0.1 - VS 2015 Tooling Preview 2

我真的不认为这是一个项目文件问题,因为 MailKit 对你来说是失败的,我怀疑你破坏了 NuGet。如果这不起作用,另一个可能会给您一些有用信息的位是运行

Dotnet restore

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

【讨论】:

以上是关于无法为 netstandard1.x 项目安装 Netstandard1.x Nuget 包的主要内容,如果未能解决你的问题,请参考以下文章

无法为 iOS xCode 项目安装 Firebase

无法为 Rails 项目安装 mysql2 gem

无法安装包“Stripe.net 39.27.0”。您正在尝试将此软件包安装到一个以 ' 为目标的项目中

错误:无法为 gevent 构建***,这是安装基于 pyproject.toml 的项目所必需的

在 ubuntu 20.04 上全新安装后,无法为 react 项目正确设置 java 1.8

React-Native:错误:无法为 iOS 项目安装 CocoaPods 依赖项,这是此模板所需的