意外的字符"$"

案例

简单代码如下:

string path = "ProcInstLog";
if (!System.IO.Directory.Exists(path))
{
    System.IO.Directory.CreateDirectory(path);
}
string file = System.IO.Path.Combine(path, K2.ProcessInstance.ID + @".log");
System.IO.File.AppendAllText(file, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} xxxxx" + System.Environment.NewLine);

VS2015在编译的时候出现了以下错误:

严重性	代码	说明	项目	文件	行
错误		意外的字符“$”	xxx	121

根本原因在于, 创建项目时选择的.NET Framework版本为 4.5, 所以不支持 字符串内插 语法.
将项目的.NET Framework版本改为 .NET Framework 4.6 即可.

<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>

微软官方说明

https://learn.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history#c-version-60

C# 6.0 版

发布时间:2015 年 7 月

版本 6.0 随 Visual Studio 2015 一起发布,发布了很多使得 C# 编程更有效率的小功能。 以下介绍了部分功能:

其他新功能包括:

  • 索引初始化表达式
  • Catch/Finally 块中的 Await
  • 仅限 getter 属性的默认值

如果整体看待这些功能,你会发现一个有趣的模式。 在此版本中,C# 开始消除语言样本,让代码更简洁且更具可读性。 所以对喜欢简洁代码的用户来说,此语言版本非常成功。

除了发布此版本,他们还做了另一件事,虽然这件事本身与传统的语言功能无关。 他们发布了 Roslyn 编译器即服务。 C# 编译器现在是用 C# 编写的,你可以使用编译器作为编程工作的一部分。

C#版本与.NET版本对应关系以及各版本的特性

C#版本 .NET版本 发布日期 特性
C# 1.0 .NET Framework 1.0 2002-02-13 委托、事件
C# 1.1 .NET Framework 1.1 2003-04-24 APM(异步编程模型)
C# 2.0 .NET Framework 2.0 2005-11-07 泛型、匿名方法、迭代器、可空类型
C# 3.0 .NET Framework 3.0 2007-11-06 隐式类型
.NET Framework 3.5 2007-11-19 对象集合初始化、自动实现属性、匿名类型、扩展方法、查询表达式、Lambda表达式、 表达式树、分部类和方法、Linq
C# 4.0 .NET Framework 4.0 2010-04-12 动态绑定、命名和可选参数、泛型的协变和逆变、互操作性
C# 5.0 .NET Framework 4.5 2012-08-15 异步和等待(async和await)、调用方信息(Caller Information)
C# 6.0 .NET Framework 4.6 2015-07-20 静态导入、C# 6 中的新增功能
.NET Core 1.0 2016-06-27
C# 7.0 .NET Framework 4.6.2 2016-08-02 元组、C# 7.0 中的新增功能
C# 7.1 .NET Framework 4.7 2017-04-05
.NET Core 2.0 2016-08-14 .NET Core 2.0 的新增功能
C# 7.2 .NET Framework 4.7.1 2017-10-17
C# 7.3 .NET Framework 4.7.2 2018-04-30
.NET Core 2.1 2018-05-30 .NET Core 2.1 的新增功能
.NET Core 2.2 2018-12-04 .NET Core 2.2 的新增功能
C# 8.0 .NET Framework 4.8 2019-04-18 C# 8.0 中的新增功能
.NET Core 3.0 2019-09-23 .NET Core 3.0 的新增功能
.NET Core 3.1 2019-12-03 .NET Core 3.1 的新增功能
C# 9.0 .NET 5 2020-09-04 C# 9.0 中的新增功能
.NET 5 2020-10-13 What's new in .NET 5
C# 10.0 .NET 6 2021-11-09 欢迎使用 C# 10 C# 10.0 中的新增功能
C# 11.0 .NET 7 2022-11-08 C# 11 中的新增功能
C# 12.0 .NET 8 2023-06-14 C# 12 中的新增功能
C# 13.0 .NET 9 2024-03-25 C# 13 中的新增功能
posted @ 2024-09-29 14:52  devs  阅读(80)  评论(0编辑  收藏  举报