使用CSharpCodeProvider时获取运行时错误程序集“System.Runtime”

时间:2015-07-01 10:30:48

标签: c# .net asp.net-mvc csharpcodeprovider

我收到有关缺少参考的运行时错误。

  

类型'System.Object'是在没有的程序集中定义的   引用。您必须添加对程序集'System.Runtime的引用,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'

我正在使用MVC应用程序,并在我的代码中使用了CSharpCodeProvider。

我没有得到任何编译错误,但是如上所述为compileResult收到运行时错误?

 CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);

我甚至在assemblies中添加了web.cofig标记,就像以下相同的错误一样。有什么线索?

  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

1 个答案:

答案 0 :(得分:2)

ASP.NET MVC大量使用dynamic关键字。这可能是问题的原始问题,因为这需要Microsoft.CSharp程序集(显然包含了它)和System.Runtime程序集(我认为这个程序集丢失了。

在编译配置中添加System.Runtime程序集:

parameters.ReferencedAssemblies.Add("mscorlib.dll"); // guess you have this one already
parameters.ReferencedAssemblies.Add("System.Runtime.dll");