csc.exe 可以强制遵守特定的 .net 标准吗?

Can csc.exe enforce conformance to a particular .net standard?

此问题专门针对 CSC,而非 msbuild。我的项目无法使用 msbuild。

如果我使用来自 .net5 SDK 的 csc.exe,我可以使用它来编译源代码并强制符合 .net 标准 2.0 吗?比如,我可以调用 csc.exe 以便使用 .net5 SDK 中但不在标准 2.0 中的 API 是编译错误吗?

我想确保我编写的 C# 代码符合 .NET 标准 2.0,并且可以在同样符合 .NET 标准 2.0 的单独构建系统中发布。

传递给 csc.exe 的选项是什么样的? csc.exe 可以这样做吗?如果不能,您可以采用什么方法来做到这一点(不使用 msbuild)?

If I am using csc.exe from a .net5 SDK

csc.exe 不是由 .net5 SDK 分发的,它是 Visual studio 的一个组件。 它安装在 :

vs 2019

C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Roslyn\csc.exe

old version used by net 40

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

.NET5 SDK 正在分发 csc.dll

您可以传递 netstandard.library 的 /reference 的参数: 例子

/reference:E:\nuget\Packages\netstandard.library.0.3\build\netstandard2.0\ref\Microsoft.Win32.Primitives.dll 

/reference:E:\nuget\Packages\netstandard.library.0.3\build\netstandard2.0\ref\mscorlib.dll 

/reference:E:\nuget\Packages\netstandard.library.0.3\build\netstandard2.0\ref\netstandard.dll 
    [..... other stuff ]

注意:E:\nuget\packages是我的包配置在我机器上的路径