C#编译器:/ nostdlib选项

在编译时,如何才能将stdlib(mscorlib.dll)包含到我的C#应用​​程序中? 据我所知,所有类都inheritanceSystem.Object类,该类在mscorlib.dll中定义。 更重要的是 – 诸如int之类的类型只是例如System.Int32的别名,它们也在mscorlib中定义。 这个选项曾经使用过吗?

是的,任何编译不与CLR桌面版本一起运行的程序的人都会使用它。 与Silverlight一样,它的目标是.NETCore或Micro Framework。 他们有自己的mscorlib.dll,当然定义了System.Object。

这是Silverlight项目示例的编译器命令行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;SILVERLIGHT /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll" etc... 

根据文件

http://msdn.microsoft.com/en-us/library/fa13yay7(VS.80).aspx

如果您尝试替换System类,则使用它。

如果要构建以针对较旧的框架版本进行部署,您可能还希望使用它。 Visual Studio(15,无论如何)在构建您配置为以较旧框架版本为目标的项目时使用此选项。 它不使用标准mscore,而是使用Reference Assemblies / Microsoft / Framework / vx.y中的一个

从MSDN – “如果要定义或创建自己的系统命名空间和对象,请使用此选项。”。 很公平 – 我不会很快就这样做,所以。 🙂