c#error CS1056:Jenkins或MSbuild的意外字符'$'

时间:2017-03-28 09:08:11

标签: c# asp.net .net jenkins

我需要使用Jenkins进行Continues集成,在我的代码中我编写了像

这样的代码
throw new ArgumentNullException($"The {nameof(Id)} cannot be null");

如果我构建应用程序它正在构建成功,但如果我使用MsBuild(或)Jenkins构建相同的应用程序,

我收到错误

Web\WebSharedHelper.cs "C:\WINDOWS\TEMP\.NETFramework,Version=v4.5.2.AssemblyAttributes.cs"
Security\ApiUserToken.cs(46,32): error CS1056: Unexpected character '$' [C:\Program Files (x86)\Jenkins\workspace\OssiaCICD\common\trunk\Cota.Common.Core\Cota.Common.Core.csproj]
Security\ApiUserToken.cs(58,32): error CS1056: Unexpected character '$' [C:\Program Files (x86)\Jenkins\workspace\OssiaCICD\common\trunk\Cota.Common.Core\Cota.Common.Core.csproj]
Security\ApiUserToken.cs(62,26): error CS1056: Unexpected character '$' [C:\Program Files (x86)\Jenkins\workspace\OssiaCICD\common\trunk\Cota.Common.Core\Cota.Common.Core.csproj]
Done Building Project "C:\Program Files (x86)\Jenkins\workspace\OssiaCICD\common\trunk\Cota.Common.Core\Cota.Common.Core.csproj" (default targets) -- FAILED.

我正在使用v4.0.30319 FrameWork for MSBuild。

6 个答案:

答案 0 :(得分:8)

我在jenkins上使用C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe代替C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe修复了问题。

答案 1 :(得分:6)

$字符串插值符号仅在C#6+中可用。确保使用C#6进行编译。 MSBuild 14.0 +支持C#6。

答案 2 :(得分:0)

如果您的Visual Studio版本早于2015年,则默认情况下IDE不提供编译它所需的C#6。

使用Visual Studio 2015或更高版本。它应该解决问题。

答案 3 :(得分:0)

这个问题可以通过几种方式解决。请在这里查看我的答案 第一种选择:

第1 https://stackoverflow.com/a/42931980/819153

第二个选项 - 尝试在运行持续集成的tfs上安装visual studio,这将为您节省很多麻烦

答案 4 :(得分:0)

正如绅士所说,我使用C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe而不是C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe在构建代理上。 它帮助了我。

我在构建代理中有MSBuild版本14.0.25420.1。

答案 5 :(得分:0)

就我而言,在下面工作..

删除了 langversion 节点并添加了对 csproj 的 netstandard 引用,以便 msbuild 与 Jenkins 或 msbuild 命令一起使用。

在 .csproj 文件中注释了以下几行。

<!--    <LangVersion>8.0</LangVersion>-->

并为 more-info 添加了 <Reference Include="netstandard" />