Как указать параметры компилятора в файле c #? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть файл code.cs, который я компилирую со следующей командной строкой:

"%ProgramFiles(x86)%\MICROS~3\2017\ENTERP~1\MSBuild\15.0\Bin\Roslyn\csc.exe" ^
/target:library /out:fx1.dll fx1.cs ^
/reference:"C:\blah\blah\Microsoft.JScript.dll" ^
/reference:"C:\astor\loads\better\ease\zog.dll"

Есть ли практический способ указать эти параметры внутри файла fx1.cs ?

В основном это C #, но как насчет других языков .Net, таких как Vb.Net и другие?Есть ли хотя бы один язык, который может указывать параметры компилятора в автономном файле?

Обновление: я также вижу, что есть файлы ответов для csc, но в них отсутствует (или я не вижу) достаточно контроля потокачтобы вставить один в CS-файл.

1 Ответ

0 голосов
/ 15 февраля 2019

Решение, которое я предложил в качестве базового ответа на этот вопрос, состоит в том, чтобы превратить файл C # в файл «polyglot» *.cs.bat, который запускает команду полной компиляции поверх исходного кода C #.

/*? 2>NUL & @echo off
echo.
echo COMPILING...

"%ProgramFiles(x86)%\MICROS~3\2017\ENTERP~1\MSBuild\15.0\Bin\Roslyn\csc.exe" ^
/target:library /out:fx1.dll fx1.cs.bat ^
/reference:"C:\blah\blah\Microsoft.JScript.dll" ^
/reference:"C:\astor\loads\better\ease\zog.dll"

PAUSE
GOTO:EOF REM */

// C# program...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;

// blah...

Для компиляции я могу просто запустить fx1.cs или fx1.cs.bat.Это, конечно, практично.

Это может быть полезно, но минусы, по крайней мере, следующие:

  • Подсветка текста теряется в различных редакторах, которые имеют ее для *.csфайлы ... Если бы существовал (простой) способ запуска файлов * .cs в пакетном режиме (type file | cmd, похоже, игнорирует PAUSE, EXIT /B, EXIT, GOTO:EOF)

  • Путь к компилятору жестко задан (но я думаю, что его можно определить с помощью большего количества пакетных операций)

  • Он пытается запустить /*.exe, поэтому первая строка всегда даетЯ ошибся, потому что я не нашел способа избежать его запуска, поэтому я могу только вставить туда ? (чтобы он никогда не был действительным путем) и скрыть его с помощью перенаправления ошибок.

Хотя редактировать в IDE непрактично, я думаю, что это может быть простой формат для распространения простых утилит.

Я не очень хорош в этом ... так что если у кого-то естьлучшие идеи (для маршрута полиглота), пожалуйста, улучшите этот ответ, комментируя или редактируя его.

...