您必须添加对程序集'netstandard,Version = 2.0.0.0的引用 [英] You must add a reference to assembly 'netstandard, Version=2.0.0.0

查看:471
本文介绍了您必须添加对程序集'netstandard,Version = 2.0.0.0的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

该项目是针对.NET Framework 4.6.1的ASP.NET MVC Web应用.

The project is an ASP.NET MVC Web App targeting the .NET Framework 4.6.1.

突然之间(某些NuGet软件包已升级),我开始在运行时遇到以下错误:

All of a sudden (some NuGet packages were upgraded) I started to get the following error during runtime:

CS0012:类型'System.Object'是在没有定义的程序集中定义的 参考.您必须添加对程序集"netstandard"的引用, 版本= 2.0.0.0,文化=中性,PublicKeyToken = cc7b13ffcd2ddd51'.

CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.

在主视图Index.cshtml中,在我使用@Html.ActionLink

In my main view Index.cshtml, in a line where I make use of @Html.ActionLink

我的机器上确实安装了.NET Core SDK 2.0和.NET Framework 4.7.1,但是我不想包含对它的引用.这只是一个.NET Framework Web应用程序,它托管在Windows IIS上,该服务器上已安装的框架为4.6.1,服务器上未安装任何NET Core.

I do have .NET Core SDK 2.0 and .NET Framework 4.7.1 installed in my machine but I don't want to include a reference to it. This is a .NET Framework web app only, it's hosted on Windows IIS where the installed framework is 4.6.1, there's no NET Core installed in the server.

那么为什么要求添加对netstandard的引用?如何在不引用netstandard而是引用完整的Windows .NET Framework 4.6.1的情况下修复它?

So why is it asking to add a reference to netstandard? How can I fix it without referencing netstandard but the full Windows .NET Framework 4.6.1?

我已经签出了以前的提交,该提交工作正常,但仍然出现此错误.因此,它与要升级的NuGet软件包无关.似乎是我本地开发机器上的东西.

I've checked out a previous commit which worked fine and I'm still getting this error. So it's not related to NuGet packages being upgraded. Seems to be something on my local dev machine.

如果将应用程序发布到目录并使用IIS运行,则它可以正常工作.

If a publish the app to a directory and run it with IIS it works.

链接到.csproj gist

packages.config

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net46" />
  <package id="BundleTransformer.Core" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Handlebars" version="1.9.73" targetFramework="net46" />
  <package id="BundleTransformer.Less" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Yui" version="1.9.52" targetFramework="net46" />
  <package id="Dapper" version="1.42" targetFramework="net46" />
  <package id="EcmaScript.Net" version="1.0.1.0" targetFramework="net46" />
  <package id="EntityFramework" version="6.0.0" targetFramework="net46" />
  <package id="Glimpse" version="1.8.6" targetFramework="net46" />
  <package id="Glimpse.AspNet" version="1.9.2" targetFramework="net46" />
  <package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.Core" version="1.2.4" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.V8" version="1.3.0" targetFramework="net46" />
  <package id="jQuery" version="2.1.3" targetFramework="net46" />
  <package id="jQuery.Validation" version="1.13.1" targetFramework="net46" />
  <package id="LowercaseDashedRoute" version="1.0.14" targetFramework="net46" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net46" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Moment.js" version="2.10.2" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
  <package id="NWebsec" version="5.1.1" targetFramework="net46" />
  <package id="NWebsec.Core" version="2.1.0" targetFramework="net46" />
  <package id="NWebsec.Mvc" version="5.1.1" targetFramework="net46" />
  <package id="Owin" version="1.0" targetFramework="net46" />
  <package id="Respond" version="1.4.2" targetFramework="net46" />
  <package id="Sendgrid" version="6.3.0" targetFramework="net46" />
  <package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net46" />
  <package id="Serilog" version="2.6.0" targetFramework="net46" />
  <package id="Serilog.Enrichers.Environment" version="2.1.2" targetFramework="net46" />
  <package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net46" />
  <package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net46" />
  <package id="Serilog.Sinks.Sentry" version="2.1.4" targetFramework="net46" />
  <package id="SerilogWeb.Classic" version="2.1.17" targetFramework="net46" />
  <package id="SharpRaven" version="2.2.0" targetFramework="net46" />
  <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
  <package id="Twitter.Bootstrap.Less" version="3.3.4" targetFramework="net46" />
  <package id="WebActivatorEx" version="2.0.6" targetFramework="net46" />
  <package id="WebGrease" version="1.6.0" targetFramework="net46" />
  <package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net46" />
</packages>

使用VS2017将应用程序发布到文件系统时,在输出中出现以下警告:

When publishing the app using VS2017 to the file system I get the following warning in the output:

以下程序集与.NET版本具有依赖关系 高于目标并且可能无法正确加载的框架 在运行时导致失败的过程中:netstandard,Version = 2.0.0.0, 文化=中性,PublicKeyToken = cc7b13ffcd2ddd51.依赖项 是:System.Transactions,Version = 4.0.0.0,Culture = neutral, PublicKeyToken = b77a5c561934e089.您应该确保 依赖程序集对于目标框架是正确的,或确保 您要解决的目标框架是从属框架 组装.

The following assembly has dependencies on a version of the .NET Framework that is higher than the target and might not load correctly during runtime causing a failure: netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. The dependencies are: System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. You should either ensure that the dependent assembly is correct for the target framework, or ensure that the target framework you are addressing is that of the dependent assembly.

但是我在System.Transactions上找不到任何内容.如何搜索引用的内容?

But I can't find anything on System.Transactions. How can I search what's referencing it?

推荐答案

我认为解决方案可能是 GitHub上的这个问题:

I think the solution might be this issue on GitHub:

尝试像这样在web.config中添加netstandard参考:"

Try add netstandard reference in web.config like this:"

<system.web>
  <compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>
  <httpRuntime targetFramework="4.7.1" />

我意识到您正在使用4.6.1,但是.NET 4.7.1的选择非常重要,因为较早的Framework版本与.NET Standard 2.0并不完全兼容.

I realise you're using 4.6.1 but the choice of .NET 4.7.1 is significant as older Framework versions are not fully compatible with .NET Standard 2.0.

我从痛苦的经历中了解到这一点,当我引入.NET Standard库时,我遇到了很多有关NUGET包和引用中断的问题.您需要考虑的另一项更改是升级到 PackageReferences ,而不是package.config文件.

I know this from painful experience, when I introduced .NET Standard libraries I had a lot of issues with NUGET packages and references breaking. The other change you need to consider is upgrading to PackageReferences instead of package.config files.

请参见本指南,并且您可能还需要工具来帮助升级.不过确实需要较晚的VS 15.7版本.

See this guide and you might also want a tool to help the upgrade. It does require a late VS 15.7 version though.

这篇关于您必须添加对程序集'netstandard,Version = 2.0.0.0的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆