首页 > 解决方案 > 为什么我会收到“错误 CS1056:意外字符 '$'”在此处放置 $ 标记?我的编译器有问题?

问题描述

我正在摆弄我学到的一些新的 C# 代码。我今天真的开始学习了,所以这是一个非常新的问题。

基本上,我学会了将 $ 放在字符串前面,以便使用 CodeCademy 中的花括号和变量名进行格式化。在课程中,我学会了像这样使用 C# 的 $ 标记:

using System;

namespace StoryTime
{
  class Program
  {
    static void Main(string[] args)
    {
      // Declare the variables
      string beginning = "Once upon a time,";
      string middle = "The kid climbed a tree";
      string end = "Everyone lived happily ever after.";

      // Interpolate the string and the variables
      string story = $"{beginning} {middle}. {end}";

      // Print the story to the console 
      Console.WriteLine(story);
    }
  }
}

现在我结束了在 Visual Studio Code 中编写自己的代码来练习。不幸的是,当我使用 $ 标记时,我的 csc 编译器告诉我:

text.cs(13,28): error CS1056: Unexpected character '$'

这是导致错误的代码:


namespace Textperiment
{
    class Program
    {
        static void Main()
        {
            string a = "alphabet";
            string b = "learn";
            string c = "easy";

            string d = $"I {b}ed the {a} in 1st grade. It was {c}.";
            Console.WriteLine(d);
            Console.WriteLine(d.ToUpper);
        }
    }

我的预期输出是“我在一年级就学会了字母表。这很容易。” $ 启动字符串插值,变量填充它。但是我得到一个错误。

我试过用谷歌搜索错误并阅读显示的页面。他们没有希望,因为他们建议安装东西,这对于看起来像语法错误的东西来说似乎有点过分了。

该代码在 Visual Studio 2019 中确实有效,因此我认为错误来自使用 csc.exe 作为我的编译器,“此编译器是作为 Microsoft (R) .NET Framework 的一部分提供的,但仅支持最高 C# 的语言版本5,不再是最新版本。”

在这种情况下,我似乎必须升级,但升级到什么?

在终端中替换 csc.exe 有什么好处?我只想编译可执行文件并运行它们,因为我很高兴在 Visual Studio Code 中编写代码。

标签: c#.net

解决方案


如此处所述

安装 Nuget 包 Microsoft.Net.Compilers 可以解决此问题。下面是我突出显示的答案的链接:Project builds fine with Visual Studio but failed from the command line

该功能是 C#6 的语法糖,尝试安装最新版本的框架 4.6.2 https://www.microsoft.com/en-us/download/details.aspx?id=53345

然后转到您的项目属性并更改目标框架上的应用程序选项以指向最新的。您无需更改代码即可将字符串插值替换为 string.Format 方法来修复它。如果您仍然收到此错误,是因为运行您的构建的编译器不是最新版本的 C#,请尝试从 Nuget 添加 Microsoft.Net.Compilers 并再次编译,这应该可以解决问题。如果您想避免安装此软件包,请尝试打开您的 .csproj 并查看应该指向版本 12 的 ToolsVersion.,然后将其更改为 14,但请确保您已安装最新版本的来自https://www.microsoft.com/en-us/download/details.aspx?id=48159的 MSBuild 或者去 C:\Program Files (x86)\MSBuild\14.0\Bin,你应该有这个文件夹和 csc.exe 编译器。如果即使那样也不能解决问题,请尝试按照以下步骤操作 https://msdn.microsoft.com/en-us/library/bb383985.aspx

根据我的经验,我以 3 种不同的方式解决了这个问题:

1-刚刚从 Nuget 获取包

2-在 tfs 服务器上安装 Microsoft Build Tools 2015

3- 大锤和最后一个选项,但对我来说是最好的,因为您不需要处理对 nuget 的依赖,正在运行该过程的 tfs 服务器上安装 Visual Studio 版本。

希望这可以帮助


推荐阅读