i_syed2000 Ответов: 1

Нужен ли мне .NET SDK, установленный на стороне клиента, чтобы codedom работал


Я использую систему.граф CodeDOM.Компилятор.CodeDomProvider для динамической генерации некоторого кода в моем настольном приложении.

Код генерируется следующим образом.

var provider = система.граф CodeDOM.Компилятор.Объект codedomprovider.CreateProvider ("CSharp");
CompilerResults cr = поставщик.CompileAssemblyFromSource(compileParams, textCode);


Я читал, что поставщик CSharp - это просто оболочка поверх CSC.exe в отличие от Roslyn, который предоставляет функции компилятора как функциональность сборки.

Вопрос: Если я использую систему.Пространство имен CodeDom для генерации кода означает ли это, что на клиентском рабочем столе, где будет работать это приложение, должен быть установлен .NET SDK, чтобы приложение могло вызывать CSC.exe.

Аналогично, если Roslyn использовался для создания сборки, нужно ли мне развертывать/копировать сборки Roslyn как часть моего приложения на рабочий стол клиента?

Что я уже пробовал:

Написал пример приложения, которое использует Roslyn и Code Dom.

Mehdi Gholam

Нет, вам это не нужно, просто фреймворк подойдет.

i_syed2000

Не могли бы вы объяснить, как это работает? Похоже, это работает и на меня. Но я немного смущен тем, как это работает. Это потому, что генерация кода встроена в само время выполнения .net?

1 Ответов

Рейтинг:
6

i_syed2000

Похоже на то "CSC.exe" действительно устанавливается как часть среды выполнения .Net. Найдено csc.exe в следующем месте.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\

Когда выполняется API codedom, запускается компилятор csc для компиляции кода в сборку.