繁体   English   中英

如何在C#文件中指定编译器选项?

[英]How to specify compiler options in c# file?

我有一个使用以下命令行编译的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#,但是Vb.Net等其他.Net语言又如何呢? 至少有一种语言可以在独立文件中指定编译器参数吗?

更新:我还看到有csc的答案文件,但它们缺少(或我看不到)足够的流控制,无法将其中一个嵌入cs文件中。

作为该问题的基准答案,我想出的解决方案是将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.csfx1.cs.bat 这实际上是可行的。

这可能很有用,但缺点至少在于:

  • 突出显示*.cs文件的各种编辑器中的文本突出显示都丢失了。如果只有一种(简便)的方式可以批量运行* .cs文件( type file | cmd似乎忽略PAUSEEXIT /BEXITGOTO:EOF

  • 编译器路径是硬编码的(但我认为可以通过更多批处理来确定它)

  • 它试图运行/*.exe ,所以第一行总是给我一个错误,因为我发现没有办法避免它被运行,所以我只能放一个? 在那里(因此它永远都不应该是有效路径),并使用错误重定向将其隐藏。

虽然在IDE中进行编辑是不切实际的,但我认为这可能是分发简单实用程序的简便格式。

我不太擅长此事...因此,如果有人有更好的主意(针对多语言路线),请通过评论或编辑来改善此答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM