在csc.exe中针对特定的框架版本进行定位

13

如何通过命令行指定csc.exe C#编译器的目标框架版本(例如,没有.csproj文件且不通过MSBUILD引擎)?

例如,如何使用C#3.0 csc.exe编译器将代码编译成针对2.0 .net框架的IL代码?

1个回答

5
在C# 3编译器的特定情况下,只要不使用任何不在.NET 2.0中的程序集或类型,就不会出现问题 - IL代码是相同的(与针对1.1的情况相反)。
此外,您可以使用/noconfig /nostdlib,然后明确引用.NET 2.0程序集(例如,在c:\Windows\Microsoft.NET\Framework\v2.0.50727中)。看起来/lib命令行选项可以通过让您指定一个目录来查找引用来使这个过程稍微容易一些,但我自己没有尝试过。

这似乎可以工作(明确引用2.0库),但第一个建议仅依赖于IL相同的事实似乎会让我“暴露”(例如,没有编译时警告表明我已偏离仅限于2.0的程序集)。 - sbohlen
是的,这会让您暴露在那种情况下。还要注意.NET 2.0和2.0SP1之间的区别(如DateTimeOffset)-我不知道您是否能轻松找到“纯正”的2.0程序集来引用。当然,您可以从非SP1计算机上复制它们... - Jon Skeet
是的,就我所知,这是我需要研究的事情,关于当MSBUILD针对.csproj文件启动时如何“执行”它(当然,在那里可以指定目标FW版本)。似乎对我来说没有可靠的csc.exe选项。 - sbohlen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接