【问题标题】:Azure site : Compiler Error Message: CS1056: Unexpected character '$'Azure 站点:编译器错误消息:CS1056:意外字符“$”
【发布时间】:2018-04-15 12:28:48
【问题描述】:

我正在尝试在 Azure 中托管我的应用程序,但出现以下错误:

编译器错误消息:CS1056:意外字符“$” 版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.7.2623.0

我使用了使用“$”符号的字符串连接。 这在我的本地机器上运行良好,但会引发编译错误。

如何在 Azure 中设置正确的框架版本,避免上述异常。

谢谢, 沙拉特

【问题讨论】:

  • 什么样的应用程序以及您是如何发布到 Azure 的?很多事情都可能出错,首先检查您是否在 web.config 中正确配置了 Roslyn。
  • 嗨 Lex,这是 Kentico CMS 应用程序。但我使用 FTP 将整个站点包从本地计算机部署到 Azure。我在我的应用程序中看不到任何与 Rolyn 相关的内容,我会再次检查。

标签: asp.net .net azure


【解决方案1】:

Lex 应该以正确的方向发送此消息而受到赞誉。我想确认这是正确的路径并解决问题并提供更多细节。尝试将 ASP.NET 应用程序部署到 Microsoft Azure 应用程序服务时,我遇到了相同的问题和错误消息“编译器错误消息:CS1056:意外字符'$'”,实际上解决方案是将 Roslyn 编译器添加到项目中。默认情况下,Microsoft Azure App Service 上使用的内置编译器仅支持 C# 5 语言功能,并且需要 Roslyn 来编译和使用 C# 6 功能。注意我正在为我的项目部署 CS 文件,而不是编译的 DLL 文件。

在项目中安装 Roslyn

  1. 在 Visual Studio 2017 中选择“工具”->“NuGet 包管理器”->“管理解决方案的 NuGet 包...”
  2. 从选项卡中选择“浏览”,然后搜索“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”
  3. 从搜索结果中选择“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”,然后在右侧选中要添加的项目名称,然后单击“安装”按钮。
  4. 重新构建您的解决方案并确保它仍然可以构建。

与 Roslyn 一起部署

  1. 您会注意到安装 DotNetCompilerPlatform 包会在您的 Web.config 文件中添加一个类似于以下内容的部分,请确保将此部分添加到您部署的 Web.config 中:

      <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers></system.codedom>
    
  2. 您还会注意到安装 DotNetCompilerPlatform 包并构建您的解决方案将一些文件添加到您的 Bin 文件夹中,确保将这些文件(包括整个“roslyn”文件夹及其中的所有文件)放入您的 Bin 文件夹中部署:Bin folder files to deploy

这就是让我的网站恢复并使用 C# 6 语言功能运行所需的全部内容,希望对您有所帮助。

【讨论】:

  • 我还发现,在完成上述步骤后,我需要更新 nuget 包管理器中列出的所有包。注意:我是在安装 Roslyn 之后这样做的。
【解决方案2】:

您可以安装 Microsoft.Dotnet.Compilers 包,然后再次编译您的网站。

请参阅此页面 - Project builds fine with Visual Studio but fails from the command line

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多