C# CodeDom 编译器。错误 CS1056:意外字符“$”

Posted

技术标签:

【中文标题】C# CodeDom 编译器。错误 CS1056:意外字符“$”【英文标题】:C# CodeDomCompiler. error CS1056: Unexpected character '$' 【发布时间】:2021-04-21 09:50:54 【问题描述】:

我的代码是这样的:

public static bool CompileClient(out string[] errors)

    using (CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"))
    
        CompilerParameters cp = new CompilerParameters
        
            GenerateExecutable = true,
            OutputAssembly = $"./hi.exe",
            CompilerOptions = "/optimize",
            TreatWarningsAsErrors = false
        ;
        if (provider.Supports(GeneratorSupport.EntryPointMethod))
            cp.MainClass = "Namespace.Program";

        CompilerResults cr = provider.CompileAssemblyFromFile(cp, Directory.GetFiles("./Sourcecode/")); // Invoke compilation

        if (cr.Errors.Count > 0)
        
            List<string> _errors = new List<string>();
            for (int i = 0; i < cr.Errors.Count; i++)
                _errors.Add(cr.Errors[i].ToString());
            errors = _errors.ToArray();
            return false;
        
        else
        
            errors = null;
            return true;
        
    

/Sourcecode/ 中的 .cs 文件包含以下代码: $"Hello name"

当我编译文件时出现此错误:error CS1056: Unexpected character '$'.

有没有办法在不使用 string + string 或 string.Format() 的情况下修复错误? 也许改变版本或什么..?

【问题讨论】:

【参考方案1】:

“字符串插值”的 $ 表示法(基本上是 string.Format() 的简写)是在 c# 版本 6 中引入的,因此您需要一个至少支持该版本的编译器。

这个答案可能会有所帮助:

Which C# compiler version to compile C# 7.3 with the CSharpCodeProvider class?

【讨论】:

以上是关于C# CodeDom 编译器。错误 CS1056:意外字符“$”的主要内容,如果未能解决你的问题,请参考以下文章

CodeDom 将生成的 .cs 文件保存在哪里?我们可以将此位置更改为其他文件夹吗

C# CodeDom 多编译器选项

JQuery:Visual Studio,错误 CS1056:意外字符“$”

使用roslyn编译website项目

如何在 codedom 编译的代码中调试/中断

为啥在 C# 10 中我会在初始化属性上收到编译器警告/错误 CS8618