Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到编译动态表达式所需的一个或多个类型。是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?_C#_.net - Fatal编程技术网

C# 找不到编译动态表达式所需的一个或多个类型。是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?

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

我正试图在Microsoft Visual C 2010中编译此代码

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年前给出的答案是一样的。这对我来说不起作用,即使我的视图包线中也有红线