Netstandard1.x 无法为 netstandard1.x 个项目安装 Nuget 包
Netstandard1.x Nuget packages cannot be installed for netstandard1.x projects
完成 Windows 10 以及最新 Visual Studio 2015、netcore 和 nuget 工具的全新安装后 - 我无法再将 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 创建为可移植 class 库,将目标更改为 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 安装重新格式化之前,这一切都有效。我错过了什么吗?
您的工具中似乎遗漏了一些东西,并且错误消息并不总是最清楚的。你能确定你有 运行 两个安装程序吗:
Visual Studio 2015 Update 3(我猜你有这个)
.NET Core 1.0.1 - VS 2015 Tooling Preview 2
我真的不认为这是一个项目文件问题,因为 MailKit 对你来说失败了,我怀疑你破坏了 NuGet。如果这不起作用,另一个可能会给你一些好的信息是 运行
Dotnet restore
在项目目录下看donet在没有Visual Studio的情况下是如何处理的。
感谢 @eddie-msft 的提示,得到了可行的解决方案。
发帖时从这里https://dist.nuget.org/index.html (v3.5.0-rc1下载最新的 nuget 命令行工具)
然后运行:
nuget.exe locals -clear all
我确保关闭了 VS 并删除了任何现有的 project.lock.json 文件。现在一切似乎都按预期工作。
我发现这个问题发生在任何全新安装 Windows/VS/tooling 的系统上,很可能是安装程序的错误。
对于 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 将允许您使用较旧的兼容包。
完成 Windows 10 以及最新 Visual Studio 2015、netcore 和 nuget 工具的全新安装后 - 我无法再将 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 创建为可移植 class 库,将目标更改为 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 安装重新格式化之前,这一切都有效。我错过了什么吗?
您的工具中似乎遗漏了一些东西,并且错误消息并不总是最清楚的。你能确定你有 运行 两个安装程序吗:
Visual Studio 2015 Update 3(我猜你有这个)
.NET Core 1.0.1 - VS 2015 Tooling Preview 2
我真的不认为这是一个项目文件问题,因为 MailKit 对你来说失败了,我怀疑你破坏了 NuGet。如果这不起作用,另一个可能会给你一些好的信息是 运行
Dotnet restore
在项目目录下看donet在没有Visual Studio的情况下是如何处理的。
感谢 @eddie-msft 的提示,得到了可行的解决方案。
发帖时从这里https://dist.nuget.org/index.html (v3.5.0-rc1下载最新的 nuget 命令行工具)
然后运行:
nuget.exe locals -clear all
我确保关闭了 VS 并删除了任何现有的 project.lock.json 文件。现在一切似乎都按预期工作。
我发现这个问题发生在任何全新安装 Windows/VS/tooling 的系统上,很可能是安装程序的错误。
对于 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 将允许您使用较旧的兼容包。