Я читал, что вы не можете скомпилировать С# 6.0 с CSharpCodeProvider и поэтому пытаетесь сделать это с Roslyn. Но я не могу найти хороший пример, как загрузить файл, а затем скомпилировать его в dll.
Как мне написать что-то похожее на этот код с Roslyn? Или есть другой способ сделать это? Теперь, когда я пытаюсь скомпилировать файлы, содержащие ссылку на проекты с кодом С# 6.0, он просто говорит: "Тип или имя пространства имен" x "не существует в пространстве имен" y "(вам не хватает ссылки на сборку?)"
public string CompileCode()
{
var provider = new CSharpCodeProvider();
var outputPath = Path.Combine(Path.GetDirectoryName(_path), $"Code.dll");
var compilerparams = new CompilerParameters(_referencedAssemblies, outputPath);
CompilerResults results = provider.CompileAssemblyFromFile(compilerparams, _path);
var dllPath = results.PathToAssembly;
if (!results.Errors.HasErrors)
return dllPath;
PrintError(results.Errors);
return "";
}
В заключение я хочу:
- Загрузите файл С#
- Скомпилируйте его в dll, чтобы я мог загрузить его позже.