C# 找不到编译动态表达式所需的一个或多个类型。是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?
我正试图在Microsoft Visual C 2010中编译此代码C# 找不到编译动态表达式所需的一个或多个类型。是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?,c#,.net,C#,.net,我正试图在Microsoft Visual C 2010中编译此代码 using System; using System.Globalization; class main { static void Main() { dynamic d; d = "dyna"; Console.WriteLine(d); } } 但我得到了这两个错误 错误1未定义或导入预定义类型“Microsoft.CSharp.Run
using System;
using System.Globalization;
class main
{
static void Main()
{
dynamic d;
d = "dyna";
Console.WriteLine(d);
}
}
但我得到了这两个错误
错误1未定义或导入预定义类型“Microsoft.CSharp.RuntimeBinder.Binder”
错误2找不到编译动态表达式所需的一个或多个类型。是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用
我读了另一本,但我是C语言的新手,我不明白到底是什么问题。特别是这些所谓的.config文件是什么以及在哪里..在解决方案资源管理器窗口中,右键单击引用,选择添加引用,转到.NET选项卡,查找并添加Microsoft.CSharp 或者添加NuGet包
Install-Package Microsoft.CSharp
确保您的项目以.NET framework 4.0为目标。Visual Studio 2010还支持.NET 3.5 framework目标,但.NET 3.5不支持动态关键字
您可以在项目属性中调整框架版本。查看了解更多信息。视图袋下的红线是我3个月来的头痛问题。
只需从project中删除Microsoft.CSharp引用,然后再次添加即可。我遇到了同样的问题,通过从project中删除Microsoft.CSharp引用,然后再次添加来解决。我遇到了同样的问题,只是删除并重新添加引用并没有修复错误,所以我将.Net版本从4.5更改为4.5.1 要实现这一点,请转到web.config文件并更改以下行 对此
并重新生成。如果未找到,Microsoft.CSharp.dll可能会发生此错误。检查您的项目参考资料。这些都不适合我 我的类库肯定都引用了System.Core和Microsoft.CSharp。Web应用程序为4.0,由于支持问题,无法升级到4.5 我在使用编译razor模板时遇到了错误,只是偶尔会遇到,就像web应用程序重新启动后一样 对我有效的解决方案是手动加载程序集,然后重新尝试相同的操作
bool retry = true;
while (retry)
{
try
{
string textTemplate = File.ReadAllText(templatePath);
Razor.CompileWithAnonymous(textTemplate, templateFileName);
retry = false;
}
catch (TemplateCompilationException ex)
{
LogTemplateException(templatePath, ex);
retry = false;
if (ex.Errors.Any(e => e.ErrorNumber == "CS1969"))
{
try
{
_logger.InfoFormat("Attempting to manually load the Microsoft.CSharp.RuntimeBinder.Binder");
Assembly csharp = Assembly.Load("Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
Type type = csharp.GetType("Microsoft.CSharp.RuntimeBinder.Binder");
retry = true;
}
catch(Exception exLoad)
{
_logger.Error("Failed to manually load runtime binder", exLoad);
}
}
if (!retry)
throw;
}
}
希望这可能对其他人有所帮助。对于我来说,删除并重新添加对Microsoft.CSharp的引用暂时修复了该问题,直到编辑受影响的文件。关闭Visual Studio并重新打开该项目可以更长期地修复此问题,因此如果在已引用Microsoft.CSharp时发生这种情况,则可以选择此选项
也许重新启动IDE作为第一步似乎微不足道,但这里有一个提醒,提醒像我这样不认为这是第一件要做的事情的人。检查您的参考资料。右键单击并添加引用。。搜索Microsoft.CSharp.dll并添加它。通常,当你创建一个新项目时,System.Core.dll是标准的,不太确定CSharp.dllMine是否已经被引用,但我仍然有这个错误。我在VS2010中创建了一个新的ASP.NETMVC4应用程序。我被难住了,把它取下来读了一遍,错误就消失了。清理/重建没有帮助。@Paul:在将项目从4.0升级到4.5后,我也遇到了同样的情况。版本/etc在4.0/4.5 IIRC之间是相同的,这可能是原因。Visual Studio团队应该真正考虑让人们将鼠标悬停在错误上,然后选择将Microsoft.CSharp添加到引用欢迎使用堆栈溢出!您可能希望包含一个代码示例或更多解释。这看起来更像是一个评论,你说的基本上和3年前给出的答案是一样的。这对我来说不起作用,即使我的视图包线中也有红线