无法定义使用'dynamic'的类或成员,因为编译器需要输入'System.Runtime.CompilerServices.DynamicAttribute'类型(代

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法定义使用'dynamic'的类或成员,因为编译器需要输入'System.Runtime.CompilerServices.DynamicAttribute'类型(代相关的知识,希望对你有一定的参考价值。

我正在尝试在我从GitHub获得的本地计算机上运行.NET MVC应用程序。

当我在Visual Studio上运行时,一切都符合,并打开一个新的浏览器窗口,其中包含错误:

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

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

enter image description here

我已经检查了谷歌和this似乎是同样的错误。

这个人自己使用动态类型,另一方面我没有使用任何动态类型,这是由.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后几天突然出现此错误。

原来这个错误可以是一个完整的红鲱鱼。

确保:

  • 你根本没有任何其他错误
  • 您已在输出窗口中检查了“输出”窗口中未显示的任何错误。
  • 确保你没有任何conflicting references

在我的情况下,我有一个打字错误导致错误,并由于某种原因触发了这个奇怪的'红鲱鱼'动态错误。

enter image description here

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

我相信1.7对于打字稿模块系统不接受'None',而1.8则不接受'None',因此错误。

另一答案

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

  1. 通过在包管理器中运行它来重新安装所有包: update-package -reinstall

我还将我的项目与4.5工作的项目进行了比较并完成了这项工作:

  1. 打开我的项目文件并删除所有“BCL”相关元素。
  2. 在项目的NuGet包管理器中卸载了所有“BCL”包(猜测它不需要移动到4.5 + ......?)
  3. 删除了System.Net.Http的旧包版本,由于某种原因没有更新(请参阅web.config - 版本应显示oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0")。
  4. 必须重启VS.
  5. 重建解决方案。
  6. 错误现在消失了。 ;)

我为解决其他一些错误而做的另一件事是通过删除这里的所有文件来清除组件缓存:

C:Users{USERNAME}AppDataLocalMicrosoftVisualStudio14.0ComponentModelCache

[咆哮]这一切浪费了一整天。感谢MS因为偷了我生命中的另一天而修复了永远不会出现的毫无意义的问题。每次升级我总会得到一个惊喜,一个可爱的游戏,修复红鲱鱼。为那些升级旧项目的人发现这些冲突会不会受到伤害?当出现问题时,或许更好的错误跟踪?我怀疑那会很困难。也许甚至像AsmSpy这样的东西,但更高级,内置于VS? [/咆哮]

另一答案

添加对System.Dynamic.Runtime的引用为我做了。

另一答案

我有同样的错误,我必须删除我的数据库集中只有2个未使用的表。我想知道为什么当我在自动生成的代码工作中手动更改它时它有效但在删除后,它工作。

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

另一答案

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

Image

另一答案

此错误将来自解决方案参考文件夹中的Sitecore.Web.Mvc.Dll的不同版本(项目名称 - >参考 - > Sitecore.Web.Mvc->右键单击并检查属性)和Sitecore.Web的版本.Mvc.Dll in Web.Config in views Folder。

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

感谢名单。

以上是关于无法定义使用'dynamic'的类或成员,因为编译器需要输入'System.Runtime.CompilerServices.DynamicAttribute'类型(代的主要内容,如果未能解决你的问题,请参考以下文章

错误:未定义的类常量'MYSQL_ATTR_USE_BUFFERED_QUERY'

You Don't Know JS: Scope & Closures (附加:Lexical/dynamic作用域)

安装的未定义方法`devise'(调用'Install.connection'建立连接):Class

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

ecshop中的些assign_dynamic(’')

'C程序的'正确的编译器'命令