【问题标题】:CS7069: Reference to type 'CodeCompileUnit' claims it is defined in 'System', but could not be foundCS7069:对类型“CodeCompileUnit”的引用声称它在“系统”中定义,但找不到
【发布时间】:2018-05-16 13:26:01
【问题描述】:

我正在尝试编译 razor html 模板,以便在 Microsoft .net Framework 4 Development 中的 webbrowser 控件中使用。一切都很好,直到我想调用“codeProvider.GenerateCodeFromCompileUnit”。 IDE 说对 CodeCompileUnit 类型的类型引用在 System 中是 mssing,即使我能够自己声明 CodeCompileUnit ...

我已经检查了参考资料,清理了解决方案,尝试重新启动 IDE 和类似的东西,但似乎没有任何东西可以解决问题。

我真的不知道该怎么做。这是当前代码:

public static Assembly Compile(IEnumerable<RazorTemplateModel> models)
{
  var builder = new StringBuilder();
  var codeProvider = new CSharpCodeProvider();
  using (var writer = new StringWriter(builder))
  {
    foreach (var razorTemplateModel in models)
    {
      GeneratorResults generatorResults = GenerateCode(razorTemplateModel);
      codeProvider.GenerateCodeFromCompileUnit(generatorResults.GeneratedCode, writer, new CodeGeneratorOptions());
    }
  }

  var result = codeProvider.CompileAssemblyFromSource(BuildCompilerParameters(), new[] { builder.ToString() });
  if (result.Errors != null && result.Errors.Count > 0)
    throw new RazorTemplateCompileException(result.Errors, builder.ToString());

  return result.CompiledAssembly;
}

代码的第 10 行显示以下错误消息:

ErrorMessage

这是我在项目中系统引用的截图:

SystemReferences

有人可以帮忙吗?

编辑:忘了提到我在 Mono.Android 项目中使用 Xamarin.Android.Support.v4 中的引用

【问题讨论】:

  • 所有 NuGet 包都更新了吗?请检查一下好吗?
  • 是的,我已经重装了很多次了。

标签: c# asp.net .net razor codedom


【解决方案1】:

这存在于System.CodeDOM 命名空间下,因此您可能必须添加using System.CodeDOM;。见https://msdn.microsoft.com/en-us/library/system.codedom.codecompileunit(v=vs.110).aspx

另外,你能检查一下你引用的System dll 的版本吗?

【讨论】:

  • 是的,我知道,我有相应的用法:
  • 使用 System.CodeDom;并使用 System.CodeDom.Compiler;
  • 系统版本为:2.0.5.0,针对.net v4.0.30319运行时编译
  • @epanalepsis 不,确保您使用与目标框架版本相同的System 版本
  • 由于我使用的是 Mono.Android,因为它是一个 android 应用程序,我想这是不可能的。 :/ 不支持 v4.0.0.0 引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多