Jenkins更改程序集信息插件不适用于Linux主机和Windows从机



我有一个使用Linux Jenkins master和Windows 10 slave的配置。我正在使用它对slave执行msbuild操作,并生成一个作为工件的安装可执行文件。我在Jenkins Windows 10主系统上工作(我用它作为从属系统),这一切都很好。然而,当我远程运行相同的作业时,我会遇到可怕的"CS1031"错误:

Properties \AssemblyInfo.cs(1,1):error CS1031:Type expected[C:\slave2Workspace\workspace\SDB Projects\CCMonitor\CCMonitor\CSMonitor.csproj]

这是指向文件中的第一个字符。如果我使用Change Assembly Info插件省略了作业步骤,那么一切都很好,并且我得到了正确的输出。我发现AssemblyInfo.cs文件缺少文件前面的字符0xEB 0xBB——这些字符不知怎么在翻译中被删除了。听起来像是一个字符集问题,但这只是这个插件步骤的问题。

是否需要进行不同的配置?

谢谢!!

所以我今天遇到了同样的问题,并找到了解决方案。不确定你是否想过这个,所以我想放弃这个解决方案以防万一。

结果是一个编码问题。程序集文件采用UTF-8编码,并带有签名。为了避免将字符添加到文件开头,可以将编码更改为不带签名的UTF-8。

我在记事本++中打开文件,然后选择编码->UTF-8 编码

如果您使用的是Visual Studio(在我的案例中为2017)

  1. 打开有问题的文件
  2. 选择文件|另存为
  3. 在Save(保存)按钮上有一个下拉菜单,其中有一个选项:Save with Encoding
  4. 在带有编码的列表中,选择不带签名的UTF-8

VS可能会告诉您已经有这样的文件,您可以选择覆盖它。Commit>Push与你的源代码管理(在我的情况下是git),瞧,就是这样。