jAC*_*jAC 34 .net c# .net-4.6.1 .net-standard
我正在使用我的类库所基于的.NET Standard 2.0预览版.
在使用一些NuGet包时遇到问题,特别是关于存档提取,我决定将我的.NET Core 2.0控制台项目迁移回.NET Framework 4.6.1.
根据不同的来源,.NET Framework 4.6.1应该实现.NET Standard 2.0规范.特别是dotnet /标准GitHub Repo.
遗憾的是,迁移到.NET Framework会导致所有.NET Framework Console项目出现以下错误:
错误CS0012类型"对象"在未引用的程序集中定义.您必须添加对程序集'netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'的引用.
在哪里Object
可以是任何东西:Enum
,Task
,...
如何在不出现此类错误的情况下使用.NET Framework(4.6.1)引用.NET Standard 2.0类库?
Fer*_*X32 26
即使在使用最新的2.0和VS 15.3之后我也遇到了这个问题.但是,我认为我的问题不同了.从Core 1.1升级到2.0后,由于某种原因,我的.web的.csproj已经<RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
.这阻止了该项目瞄准正确的2.0版本.
我的类库(.Layer)项目有<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
.
我删除了他们两个,我的项目最终开始使用2.0,一切都很顺利.
OMI*_*MID 23
尝试在web.config中添加对netstandard的引用,如下所示:
<system.web>
<compilation debug="true" targetFramework="4.7.1">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
</system.web>
Run Code Online (Sandbox Code Playgroud)
jAC*_*jAC 12
根据这个GitHub问题,处理类似的问题,你现在必须手动NETStandard.Library.NETFramework
在.NET Framework项目中添加对包的引用*.
通过NuGet控制台安装它:
Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview1-25305-02 -Pre
Run Code Online (Sandbox Code Playgroud)
几天前,.NET Core/Standard 2.0预览版2发布了,如果您更新,则需要以下版本:
Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview2-25405-01 -Pre
Run Code Online (Sandbox Code Playgroud)
或通过NuGet商店(选中显示预发布版本)并搜索NETStandard.Library.NETFramework
这将解析引用,错误应该消失.
*Joperezr表示微软计划让一个工具稍后处理.
现在你必须手动添加对这个包的引用,这可能很烦人,但是将来我们正计划为你做这个工具.
很高兴听到许多人对 Visual Studio 的更新解决了他们的问题;但是,值得指出的是,由于存在错误和其他问题,不再建议尝试从 .NET Framework 4.6.1 项目中使用 .NET Standard 2.0 库。您应该尽可能使用 4.7.2 或更新版本。
微软 .NET 团队的项目经理 Immo Landwerth 在推特上写道:
对不起,但我们搞砸了。我们试图让 .NET Framework 4.6.1 追溯实现 .NET Standard 2.0。这是一个错误,因为我们没有时间机器并且有一堆错误。
如果您想从 .NET Framework 使用 .NET Standard 1.5+,我建议使用 4.7.2。
在.NET标准的可比性矩阵已更新与4.6.1脚注内容如下:
此处列出的版本代表 NuGet 用于确定给定 .NET Standard 库是否适用的规则。虽然 NuGet 认为 .NET Framework 4.6.1 支持 .NET Standard 1.5 到 2.0,但在使用为 .NET Framework 4.6.1 项目中的这些版本构建的 .NET Standard 库时存在一些问题。对于需要使用此类库的 .NET Framework 项目,我们建议您将项目升级到 .NET Framework 4.7.2 或更高版本。