从命令行编译新的 C# 版本(C# 7.0 更高版本)
Posted
技术标签:
【中文标题】从命令行编译新的 C# 版本(C# 7.0 更高版本)【英文标题】:Compiling New C# Versions (C# 7.0 Higher) From The Command Line 【发布时间】:2022-01-19 05:47:52 【问题描述】:当我尝试使用 Microsoft 的 Visual C# 编译器 (v4.8.4084.0) 从命令行编译源代码时,我收到以下错误和/或警告:
PS C:\> csc Program.cs
此编译器作为 Microsoft (R) .NET Framework 的一部分提供,但仅支持 C# 5 以下的语言版本,该版本不再是最新版本。对于支持较新版本 C# 编程语言的编译器,请参阅http://go.microsoft.com/fwlink/?LinkID=533240
作为 Roslyn 项目的一部分,C# 7.0 语言功能目前正在开发中;但 C# 编程语言的当前版本是C# 10。有没有办法从命令行使用C# 7.0 高级语言功能?
【问题讨论】:
以下内容可能会有所帮助:docs.microsoft.com/en-us/visualstudio/msbuild/… 【参考方案1】:如果您安装了 Visual Studio,您应该在“开发人员命令提示符”的开始菜单中获得一个条目。这将在您的路径中包含最新的 csc 和 msbuild。您必须已将旧的(未维护的)工具添加到您的 PATH 中,这就是您收到该错误的原因。
【讨论】:
为了解决这个问题,在浏览论坛的时候,发现在.csproj的<TargetFramework>
属性中使用的.NET版本应该指定为net45
> 文件。我尝试了此设置,但收到的反馈是系统上未安装 .NET Framework 4.5。当我想安装 .NET Framework 4.5 时,我被告知 .NET Framework 4.5 已经安装。我很困惑该怎么做。
如您所说,我通过在 Visual Studio IDE 的 Developer PowerShell 中提供 dotnet new console
命令创建了该项目。我测试了文章"What's new in C# 8.0" 中的一些示例,程序运行良好。在这个阶段,我在 *csproj 文件中测试了@raBinn 在他的帖子中提到的<LangVersion>
功能,但我意识到我是否使用它并不重要。谢谢。【参考方案2】:
尝试打开 *.csproj 文件并添加到 <PropertyGroup>
标记。我将它添加到 DEBUG 和 RELEASE 标记中。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<!-- Using the following property will work. -->
<LangVersion>8.0</LangVersion>
</PropertyGroup>
</Project>
【讨论】:
我试过了,可惜没有成功。以上是关于从命令行编译新的 C# 版本(C# 7.0 更高版本)的主要内容,如果未能解决你的问题,请参考以下文章
C# 编译器 /optimize 命令行选项会影响 JITter 吗?