我有一个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文件中。
答案 0 :(得分:0)
作为该问题的基准答案,我想出的解决方案是将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中进行编辑不切实际,但我认为这可能是分发简单实用程序的一种简便格式。
我在这方面不是很擅长...因此,如果有人有更好的主意(多语言路线),请通过评论或编辑来改善此答案。