Правильный способ найти путь к компилятору С#?

Возможный дубликат:
C# — Как получить путь к csc.exe?

Есть ли «правильный» способ найти путь к компилятору С# в данной системе?

Например. для Java "правильный" способ - использовать ключ реестра HKLM\Software\JavaSoft для просмотра всех различных JDK и их местоположений, а не предполагать, что все находится в %ProgramFiles%\Java.

Есть ли аналогичный метод для С#?


person user541686    schedule 01.09.2011    source источник
comment
@Bala: Ах, моя ошибка; это действительно дубликат. Спасибо, что нашли.   -  person user541686    schedule 01.09.2011


Ответы (2)


Вы можете найти список установленных фреймворков в: HKLM\Software\Microsoft.NetFramework

И в файловой системе %Windows%\Microsoft.NET\Framework

Только помня, что вы можете получить доступ к службам компилятора через сами классы .net.

person Adilson de Almeida Jr    schedule 01.09.2011
comment
+1 да, я думаю, более прямого способа сделать это не так много, спасибо... - person user541686; 01.09.2011
comment
Взгляните на это: support.microsoft.com/kb/304655 - person Adilson de Almeida Jr; 01.09.2011
comment
Статья базы знаний работает только в том случае, если я делаю это с С#. Что на самом деле не работает, потому что я делаю это из JScript. - person user541686; 01.09.2011

Я предпочитаю что-то менее зависящее от системы:

string cscPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(object).Assembly.Location),"csc.exe");
person Interarticle    schedule 01.09.2011
comment
Это работает только при условии, что я делаю это с С#. Что на самом деле не работает, потому что я делаю это из JScript. :П - person user541686; 01.09.2011
comment
Ой. Тогда зачем тег C#? Это довольно запутанно. - person Interarticle; 02.09.2011
comment
Действительно? Извините, но в следующий раз я буду помечать вопросы о компиляторе C# тегом JScript. - person user541686; 02.09.2011
comment
Это получает путь к вашей работающей сборке, который не обязательно является путем, где находится csc.exe. Компилятор является частью .NET Framework, встроенной в каталог Windows. Если вы установили Roslyn, он также может находиться в Program Files (x86). - person Matt; 31.03.2020