Решение, которое я предложил в качестве базового ответа на этот вопрос, состоит в том, чтобы превратить файл 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 непрактично, я думаю, что это может быть простой формат для распространения простых утилит.
Я не очень хорош в этом ... так что если у кого-то естьлучшие идеи (для маршрута полиглота), пожалуйста, улучшите этот ответ, комментируя или редактируя его.