Azure站点:编译器错误消息:CS1056:意外字符' $'

时间:2018-04-15 12:28:48

标签: asp.net .net azure

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

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

我使用' $'使用字符串连接标志。 这在我的本地机器上工作正常,但会抛出编译错误。

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

谢谢, 沙拉斯

2 个答案:

答案 0 :(得分:0)

Lex应该以正确的方向发送此邮件而获得荣誉。我想确认这是正确的路径,并解决了该问题并提供了更多细节。尝试将ASP.NET应用程序部署到Microsoft Azure App Service时遇到相同的问题和错误消息“编译器错误消息: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语言功能运行所需的一切,希望对您有所帮助。

答案 1 :(得分:0)

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

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