- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,如果之前有人问过这个问题,我们深表歉意。我查了又查,有很多相互矛盾和过时的信息,因为netstandard2.0已经发布了。
我正在学习新的 netstandard 和核心迁移,并使用 CLI dotnet 命令构建了空的普通“hello world”项目。有 Nuget 引用资料。
问题是添加从 netstandard2.0 类库到 net461 类库的引用会导致错误(netstandard2.0 --> net461 引用)
"cannot be added due to incompatible targeted frameworks between the two projects. Please review the project you are trying to add and verify that is compatible with the following targets"
Rich Lander 的这篇微软文章声称我可以使用 netstandard2.0 做到这一点
Immo Landwerth [MSFT] 在他的文章中似乎暗示了通过兼容性垫片的可能性,我相信这可能仅通过 Nuget 引用:
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
(也许 Scott Hanselman 可以提供帮助!)
看来netsandard2.0支持net461,“.NET实现支持”网格表明了这一点。
https://learn.microsoft.com/en-us/dotnet/standard/net-standard
已创建一个 GitHub 存储库来演示这一点
https://github.com/raxuser100/net_standard_references.git https://github.com/raxuser100/net_standard_references/tree/master
克隆上面的 master 并从命令提示符运行它:
dotnet add .\classlib_netstandard2.0_ref_classLib_net461\classlib_netstandard2.0_ref_classLib_net461.csproj reference .\classlib_net461\classlib_net461.csproj
然后您将收到错误消息。
csproj 文件具有以下内容classlib_net461.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
</Project>
classlib_netstandard2.0.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
我使用下面的 CLI 命令来创建项目结构:
dotnet new console --name console_core2.0 --framework netcoreapp2.0
dotnet new classlib --name classlib_netstandard2.0 --framework netstandard2.0
dotnet new classlib --name classlib_net461 --target-framework-override net461
# netstandard2.0 --> net461 link
dotnet new classlib --name classlib_netstandard2.0_ref_classLib_net461 --framework netstandard2.0
<#
add project a reference
netstandard2.0 --> net461 link
this returns an error
cannot be added due to
incompatible targeted frameworks between the two projects. Please review the project you are trying to add and verify that is compatible with the following targets:
At line:1 char:1
Works if we edit classlib_net461.csproj and add multiple targets including netstandard2.0
<PropertyGroup>
<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
</PropertyGroup>
#>
dotnet add .\classlib_netstandard2.0_ref_classLib_net461\classlib_netstandard2.0_ref_classLib_net461.csproj reference .\classlib_net461\classlib_net461.csproj
如果我们编辑 classlib_net461.csproj 并添加包括 netstandard2.0 在内的多个目标,则可以工作
classlib_net461.csproj
<PropertyGroup>
<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
</PropertyGroup>
现在,当我们引用时,它工作正常,如下所示:
classlib_netstandard2.0_ref_classLib_net461.csproj
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\classlib_net461\classlib_net461.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
这是否有效,因为现在两个类库都以 netstandard2.0 为目标
有没有一个简单的图表可以用简单的术语来揭开所有这些问题的神秘面纱!
为什么这不起作用。如果一个空的 netstandard2.0 实现了 net461 的大部分功能,那么它肯定拥有支持裸 net461 引用所需的一切。我知道有一些 api 不起作用,即 WPF,但是这些都是裸项目,没有 Nuget 或直接二进制引用。
解决方法,为什么会这样?我们是否总是需要在 classlib 中同时针对 net461 和 netstandard2.0,以便它们只能被 netstandard2.0 classlib 引用。
在 netstandard2.0 类库中使用旧版 .net 框架类库(net4.3 及以上)的正确结构是什么。
这是如何运作的?
最佳答案
对 .NET Standard 2.0+ 和 .NET Core 2.0+ 项目引用 .NET Framework 库的支持当前仅限于 NuGet 包(通过特殊的后备定义),这就是为什么它不适用于您的项目-项目引用。
当 MSBuild 为此使用相同的解决策略时,这可能会在即将推出的工具版本中发生变化。请参阅this tracking GitHub issue .
关于.net - netstandard2.0 (.net standard 2.0) 类库无法引用 net461 (.net Framework 4.6.1) 类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50156863/
我创建了一个.net核心类库包并上传到nuget.org 在依赖项部分说我的项目依赖于 .NetStandard 1.4,即高于 1.6 的 NetStandard.Library 为什么版本号会出现
使用以下项目创建解决方案。 一个.NetStandard2.0项目,命名为“1” 一个.NetStandard2.0项目,命名为“2” 在2中添加项目1的引用 .Net4.6.1 控制台项目将其命名为
我明白了 Unable to resolve 'NETStandard.Library (>= 1.6.1)' for '.NETStandard,Version=v2.0'. 在将我的 aspnet
这些天我真的对 .NET 中平台的术语感到困惑 - 在我们拥有 PCL 之前我曾经理解它。 我找到了以下文件: .NET Platform Standard .NET Standard Library
我在 visual studio 2017 中,我们的团队还有其他针对 .netstandard 框架的项目,但是当我尝试将我的项目重新定位到 .netstandard 时,它没有显示选择 .nets
我在 visual studio 2017 中,我们的团队还有其他针对 .netstandard 框架的项目,但是当我尝试将我的项目重新定位到 .netstandard 时,它没有显示选择 .nets
由于有兴趣将我们的服务器系统迁移到.Net core,我目前正在工作中尝试 VS2017。我已经将几个小工具项目切换为针对 .NetStandard 1.2(重新创建和移动文件),并且所有内容都在本地
假设我有一个类库,我想以 netstandard1.3 为目标,但也使用 BigInteger。这是一个简单的示例 - 唯一的源文件是 Adder.cs: using System; using Sy
我正在构建一个 .NETStandard 库(1.3 版),在库中使用异步等待工作正常,直到我添加对 Windows.Foundation.UniversalApiContract 的引用。添加此引用
在 .NET Core 和 .NET Framework 4.x 中,以下代码按预期工作: var match = Regex.Match(src, pattern) .Groups
我正在努力了解 NETStandard 类库,以了解我正在处理的潜在 NuGet 包。然而,这是我第一次尝试使用 NuGet 和 NETStandard 包,所以我在某些方面有点迷茫,其中之一是引用系
我有 2 个项目(VS 2017 RC) MyLib (NetStandard1.4) - 引用文献Newtonsoft.Json MyConsoleApp(普通、传统控制台应用程序,针对 .Net
我正在将一个针对 net472 的项目移植到 netstandard。我遇到的最后一个 System.Web 依赖项是 HttpServerUtility.UrlTokenEncode(Byte[])
我的 Xamarin Android 项目引用了 .NetStandard 项目。Android 项目中的断点工作正常,但在 .NetStandard 代码中却没有。有什么办法可以解决这个问题吗? 最
我的 Xamarin.Forms 以 .NETStandard 1.4 为目标并导入可移植项目的项目在系统引用方面存在问题。 为 .NETCore 导入了相关的可移植配置文件和系统 NuGet 包,但
我尝试使用 MSBuild 支持设置干净的 CI 构建代理。我用 Build Tools for Visual Studio 2017和 component directory list Start-
我看到评论说我将“需要 Core 3.0”,但我不确定这到底是什么意思。 Core 3.0 安装在我的系统上,如果我愿意,我可以创建一个 Core 3.0 项目,但据我所知,我无法创建一个同时针对 C
我在 Visual Studio 2019 版本 16.5.0 Preview 1 中使用 .NET Core 3.1 运行带有 Http 触发器的 Azure 函数,但出现以下错误: The 'Ht
最近 Xamarin 宣布支持 NetStandard(请参阅 https://releases.xamarin.com/stable-release-cycle-7-service-release-
在 net45 中,Encoding.GetEncoding("Shift-JIS") 工作正常,但在 netstandard 下它会抛出: System.ArgumentException : 'S
我是一名优秀的程序员,十分优秀!