我需要使用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。
答案 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" />