将 .NetStandard 2.0 Nuget 包安装到 VS2015 Net 4.6.1 项目中

Posted

技术标签:

【中文标题】将 .NetStandard 2.0 Nuget 包安装到 VS2015 Net 4.6.1 项目中【英文标题】:Installing a .NetStandard 2.0 Nuget package into a VS2015 Net 4.6.1 project 【发布时间】:2018-03-29 00:54:15 【问题描述】:

我正在尝试将针对 .NetStandard 2.0 (Microsoft.Extensions.Logging.Abstractions) 的 Nuget 包安装到 Visual Studio 2015 中的 Net 4.6.1 项目中。但是,虽然框架应该兼容,但它不兼容干得好:

Install-Package : Could not install package 'Microsoft.Extensions.Logging.Abstractions 2.0.0'. You are trying to 
install this package into a project that targets '.NETFramework,Version=v4.6.1', but the package does not contain 
any assembly references or content files that are compatible with that framework. For more information, contact 
the package author.
At line:1 char:1
+ Install-Package Microsoft.Extensions.Logging.Abstractions

我已按照此处列出的步骤进行操作:Entity Framework Core 2.0 on .NET 4.6.1

所以我已经安装了包“NETStandard.Library.NETFramework”,并添加了

<PropertyGroup>
  <PackageTargetFallback>netstandard2.0</PackageTargetFallback>
</PropertyGroup>

到 csproj。但是,没有运气 - 仍然是同样的问题。

有没有办法将 NetStandard 2.0 包安装到我的项目中(无需升级 VS 或安装任何 Net Core 目标包等)?

谢谢

【问题讨论】:

我刚刚看到这是一个 VS2015 项目——我怀疑这就是问题所在。它在 .NET Core 2.0 SDK 中运行良好,具有 Core SDK 风格的项目。 【参考方案1】:

有没有办法将 NetStandard 2.0 包安装到我的项目中(无需升级 VS 或安装任何 Net Core 目标包等)?

恐怕不会。正如 Jon 指出的那样,该问题的原因是您使用的是 Visual Studio 2015。

根据.NET Standard,.NET Standard 2.0 支持.NET Framework 4.6.1(带有.NET Core 2.0 SDK):

所以我们需要安装 .NET Core 2.0 SDK。 Microsoft 每次关于 .NET Core 2.0 预览版的通信都提到 Visual Studio 2017,因此我认为强烈建议使用 Visual Studio 2017 与 .NET Core 2.0 配合使用。

此外,NuGet 包 NETStandard.Library.NETFramework 已弃用

因此,将 .NetStandard 2.0 Nuget 包安装到 Net 4.6.1 项目中,我强烈建议使用 Visual Studio 2017 来使用 .NET Core 2.0。

希望这会有所帮助。

【讨论】:

实际上,有一个针对所需目标的 VS 2015 安装程序,并且适用于 VS 2015 的 NuGet 3.6.0 支持这一点。但是还是有一些bug,比如github.com/dotnet/sdk/issues/1539 感谢 Leo,非常感谢您的回答。如果您名下的 MSFT 泄露了您在 Microsoft 工作,请提供一些反馈:对于我作为半专业开发人员(必须在非管理员环境中使用 VS 且仅不经常/包更新)的我来说,C# 开发有成为现代版的 DLL 地狱。如果像上面提到的那样非常简单的软件包有硬性要求,需要对 VS 进行持续的管理员更新,甚至是最新/最好的版本,恕我直言,出了点问题。我喜欢Net的进步,但不应该忘记兼容性! 如何添加对位于 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\netstandard\v4.0_2.0.0.0__cc7b13ffcd2ddd51\netstandard.dll 中的 .netstandard.dll 的引用【参考方案2】:

使用以下支持引用 .NET Standard 2.0 包:

适用于 VS 2015 的 NuGet 3.6.0 或更高版本(来自 NuGet's download site - 可能尚未列为推荐的最新版本) 从https://aka.ms/netstandard-build-support-netfx 安装“.NET Standard Support for Visual Studio 2015”(VS 中的 NuGet 也会在其输出窗口中打印指向此链接的链接)。

使用 .NET Standard 2.0 库时仍然存在一些错误,尤其是在混合使用 .NET Standard

【讨论】:

谢谢马丁。这确实回答了这个问题 - 不幸的是,我自己不能走这条路,因为我在没有管理员的机器上并且不能安装例如 VSIX。有点遗憾.. .Net 开发过去很容易,现在如果你不能不断更新你的工具,你似乎就被冷落了 我还需要安装“.NET Core Tools for Visual Studio 2015”github.com/dotnet/core/blob/master/release-notes/… 感谢您提供 https:// 链接。它用 Azure.Messaging.ServiceBus.7.1.2 修复了我的 VS 2015 Nuget 包问题。警告:此链接下载 dotnet-standard-support-vs2015-2.0.0-win-x86.msi 并将安装且无反馈。在程序和功能中显示为“.NET Standard Support for Visual Studio 2015 (x86)”

以上是关于将 .NetStandard 2.0 Nuget 包安装到 VS2015 Net 4.6.1 项目中的主要内容,如果未能解决你的问题,请参考以下文章

增量 Nuget 包版本 NetStandard 本地文件夹 Visual Studio 2017

带有 Realm 3.4.0 的 .Net Standard 2.0“无法解析引用”Xamarin 表单

在 NetStandard 2.0 类库中托管 WCF 服务

将 .NET Core 2.0 类库转换为 .NET Standard

netstandard2.0 (.net standard 2.0) 类库不能引用 net461 (.net framework 4.6.1) 类库

Emgu.CV 4.2.0 图像转换方法不可用