Среда разработки Visual Studio 2019, язык С#, .NET Framework v4.7.2. Пытаюсь скомпилировать простой код, который должен скомпилировать новый файл в ходе работы программы. Код взят отсюда -
https://habr.com/ru/post/67431/. При компиляции возникает исключение
Невозможно найти исполняемый файл компилятора csc.exe
в строке
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
В сети есть решения этой проблемы, но для других ситуаций, а у меня ошибка возникает в простом примере кода.
Вот весь код:
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.CSharp;
namespace ConsoleCompile
{
class Program
{
static void Main(string[] args)
{
// Source code для компиляции
string source =
@"
using System.Collections.Generic;
using System.Linq;
namespace Foo
{
public class Bar
{
public static void SayHello()
{
System.Console.WriteLine(""Hello World"");
System.Console.WriteLine( string.Join("","", Enumerable.Range(0,10).Select(n=>n.ToString()).ToArray() ) );
}
}
}
";
// Настройки компиляции
Dictionary<string, string> providerOptions = new Dictionary<string, string>
{
{"CompilerVersion", "v4.7.2"}
};
CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
CompilerParameters compilerParams = new CompilerParameters
{ OutputAssembly = "D:\\Foo.EXE", GenerateExecutable = true };
// Компиляция
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
// Выводим информацию об ошибках
Console.WriteLine("Number of Errors: {0}", results.Errors.Count);
foreach (CompilerError err in results.Errors)
{
Console.WriteLine("ERROR {0}", err.ErrorText);
}
Console.ReadKey();
}
}
}