CS7069: ссылка на тип «CodeCompileUnit» утверждает, что он определен в «Системе», но не найден - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь скомпилировать бритвенные HTML-шаблоны для использования в элементе управления веб-браузера в Microsoft .net Framework 4 Development. Все хорошо, пока я не хочу вызывать "codeProvider.GenerateCodeFromCompileUnit". В среде IDE указывается, что ссылка на тип CodeCompileUnit типа 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

1 Ответ

0 голосов
/ 16 мая 2018

Это присутствует в System.CodeDOM пространстве имен, поэтому вам, вероятно, придется добавить using System.CodeDOM;. Смотри https://msdn.microsoft.com/en-us/library/system.codedom.codecompileunit(v=vs.110).aspx

Кроме того, вы можете проверить версию System dll, на которую вы ссылались.

...