C# 无法定义使用';动态';因为编译器需要类型';System.Runtime.CompilerServices.DynamicAttribute';

C# 无法定义使用';动态';因为编译器需要类型';System.Runtime.CompilerServices.DynamicAttribute';,c#,asp.net,.net,asp.net-mvc,dynamic,C#,Asp.net,.net,Asp.net Mvc,Dynamic,我正试图在本地计算机上运行一个.NETMVC应用程序,这是我从GitHub获得的 当我点击Visual Studio上的run时,所有内容都符合要求,并打开一个新的浏览器窗口,其中包含以下错误: CS1980:无法定义使用“dynamic”的类或成员,因为编译器需要类型“System.Runtime.CompilerServices.DynamicAttribute” 同一窗口中的编译器部分显示以下错误: 我在谷歌上查过了,似乎也是同样的错误 这家伙自己使用的是动态类型,另一方面,我没有使用任

我正试图在本地计算机上运行一个.NETMVC应用程序,这是我从GitHub获得的

当我点击Visual Studio上的run时,所有内容都符合要求,并打开一个新的浏览器窗口,其中包含以下错误:

CS1980:无法定义使用“dynamic”的类或成员,因为编译器需要类型“System.Runtime.CompilerServices.DynamicAttribute”

同一窗口中的编译器部分显示以下错误:

我在谷歌上查过了,似乎也是同样的错误

这家伙自己使用的是动态类型,另一方面,我没有使用任何动态类型,这是由.NET编译器自动生成的,我使用的是.NET 4.5,它应该支持动态

我尝试应用相同的解决方案(将所有System.Core引用更改为4.0) 但问题是它们都已经是4.0版了


你知道我该如何解决这个问题吗?

我在尝试迁移的项目中遇到了类似的错误。尝试将项目的框架重新定位到一两个版本,一旦找到没有错误的目标版本,就将目标重新定位到最初遇到问题的版本


我在一个针对4.6.2的网站项目中遇到了同样的错误,该项目引用了一些较旧的库,将其重新定位到4.5.1,从而解决了错误。我立即将目标重新定位到4.6.2,没有再次遇到错误。

在使用“传统”MVC应用程序(不是新的.NET Core/vNext应用程序)更新到VS2015.3几天后,我突然遇到了这个错误

事实证明,此错误可能是一个完全的“过火的人”

确保:

  • 你没有任何其他错误
  • 您已经检查了“输出”窗口中没有显示的任何错误
  • 确保你没有
在我的例子中,我有一个typescript错误导致了一个错误,并且由于某种原因触发了这个奇怪的“红鲱鱼”动态错误

我的修复方法是进入
.csproj
文件,将typescript工具版本更新为1.8(需要卸载项目并手动编辑)。正如我所说的,这与错误无关,但我提到了细节,因为其他人可能会遇到同样的问题


我相信1.7不接受typescript模块系统的“无”,而1.8接受,因此出现了错误。

我也有同样的问题,但这里的答案都没有解决,但确实为我指明了正确的方向。我想我没有将我机器上的.NET版本更新为新版本。安装后,我回滚了目标框架(正如建议的那样),重新定位了较新的框架,并做了一些额外的事情:

  • 通过在软件包管理器中运行以下命令,重新安装了所有软件包:

    更新包-重新安装

  • 我还将我的项目与适用于4.5的项目进行了比较,并做了如下操作:

  • 打开我的项目文件并删除所有与“BCL”相关的元素
  • 卸载了该项目的NuGet package manager中的所有“BCL”包(估计不需要移动到4.5+…?)
  • 删除了
    System.Net.Http
    的旧软件包版本,该版本由于某种原因未更新(请参见web.config-版本应显示
    oldVersion=“0.0.0-4.0.0.0”newVersion=“4.0.0.0”
  • 必须重新启动VS
  • 重建解决方案
  • 错误现在消失了。;) 我为解决其他一些错误而做的另一件事是通过删除此处的所有文件来清除组件缓存:

    C:\Users\{USERNAME}\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache\


    这一切浪费了整整一天。感谢微软在我的生命中又多偷了一天时间,解决了一些本不该发生的毫无意义的问题。每次升级,我都会得到一个惊喜,还有一个可爱的修正红鲱鱼的游戏。对于那些升级旧项目的人来说,检测这些冲突不会有什么坏处吗?当事情出错时,也许更好地跟踪错误?我怀疑这会有那么难。也许甚至有点像AsmSpy,但更先进,内置于VS?[/rant]

    添加对
    System.Dynamic.Runtime
    的引用为我做到了这一点。

    我的解决方案是在视图文件夹下的web.config中更正MVC的版本。例如,项目引用了MVC组件版本5.2.2.0,但在Views/web.config文件中是版本5.2.4.0(见图)


    我也有同样的错误,我的数据库中只有两个未使用的表需要删除。我想知道为什么当我在自动生成的代码工作中手动更改某个内容时,它起作用了,但在删除后,它起作用了


    因此,请注意,此类不一致也可能导致此错误。

    此错误将出现,因为解决方案参考文件夹(项目名称->参考->Sitecore.Web.Mvc->右键单击并检查属性)中的Sitecore.Web.Mvc.Dll版本与视图文件夹中的Web.Config中的Sitecore.Web.Mvc.Dll版本不同

    要解决此错误,必须确保两个文件夹中的Sitecore.Web.Mvc.Dll版本相同


    Thanx.

    对于我的情况,我修复了在package Manager控制器上运行命令行“更新包-重新安装”的问题。

    尝试了一些其他答案,但没有成功,但总体共识似乎是缓存的构建工件或编译器状态或其他方面存在某种问题。以下是对我有效的方法:

    • 删除问题.cshtml文件,观察错误消失
    • 开放源代码控制并还原删除

      • 在《代码》与2019年的对比中看到了这一点。我排除并重新包含了有问题的文件(在我的例子中是_Layout.cshtml),这解决了问题。

        我的问题在_Layout.cshtml中。 上述解决方案中没有一个对我有效。我正在使用VS2017进行测试