@Afrodita13124

Невозможно найти исполняемый файл компилятора csc.exe?

Среда разработки 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();
        }
    }
}
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Только что в MVS Community 2017 ваш код собрался без ошибок, ничего не менял и не настраивал.

Попробовать переустановить .net framework точнее обновить до последней, или в установщике указать repair
Ответ написан
Комментировать
vabka
@vabka Куратор тега .NET
Токсичный шарпист
У вас csc в PATH нет. Он должен лежать где-то в недрах visual studio, емнип.
А вообще нет сейчас никакого смысла компилировать код через csc, когда можно сразу обращаться к апи рослина.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы