【发布时间】:2019-09-24 14:40:44
【问题描述】:
我发现 Roslyn 附带的 csc.exe 二进制文件可以使用 -langversion:<string> 命令行参数来设置我要编译的 C# 版本。但是如何选择我希望编译器使用的 .NET 版本?
对于我使用一些 .NET SQL Server 功能的简单测试程序,编译过程工作得很好,所以我知道编译器在我的计算机上以某种方式使用了 .NET 版本。我的C:\Windows\Microsoft.NET\Framework 目录中有多个.NET 版本,我假设编译器正在使用其中之一。我想在编译我的程序时明确设置编译器使用的 .NET 版本。
注意:如果您能详细说明一下编译器如何首先选择一个版本,那也将不胜感激。
【问题讨论】:
-
安装的每个 .net 版本都应该有自己的
csc.exe。 -
我知道这一点。但是,我没有使用任何与 .NET 版本捆绑在一起的
csc.exe二进制文件。 Roslyn 可以通过nuget.exe自行下载,并可以在任何地方运行。 -
没有这样的东西。目标框架版本是一个 MSBuild 项目属性,这会导致在编译期间使用不同的引用程序集集。
-
如果这是真的,那么我的 Roslyn 目录中的
csc.exe二进制文件如何能够在不通过msbuild调用的情况下构建我的程序?它必须以某种方式自动找到要使用的 .NET 框架版本,因为我将 Roslyn 与 .NET 分开安装,并且我的系统上有多个可用的 .NET 版本。那么从逻辑上讲,我不应该能够直接控制这种行为吗?