.net - 通过 TeamCity 构建时的文件名编码问题,但如果登录到机器并手动构建则不会
问题描述
使用 TeamCity 编译项目时遇到问题。如果我登录机器并使用 msbuild 手动运行构建脚本,它可以正常编译,所有自定义构建任务都会按预期编译和运行,测试编译和运行,并且创建安装程序的脚本也可以正常运行。
但是,一旦我使用来自 TeamCity 的相同 msbuild 版本运行相同的构建脚本,我就会遇到编码问题。
在一个地方,我有一个将docx文件转换为pdf的构建任务。它需要一个要转换的文档列表,并且其中一个名称包含德语字符。这在 TeamCity 日志中显示为黑色菱形上的问号,构建任务报告它找不到该文件并且构建失败。
我尝试将 msbuild 脚本的所有文件编码转换为 utf-8 并添加了很好的措施
<?xml version="1.0" encoding="UTF-8"?>
到每个构建脚本。无论如何都会发生完全相同的错误。
我尝试在 TeamCity中使用msbuild构建步骤以及命令行构建步骤,并手动调用我在登录机器和手动构建时使用的相同 msbuild。所有尝试都会导致完全相同的错误。
TeamCity 本身是否有一些设置我必须更改以避免这种情况或可能导致它的原因?
使用的版本:
- TeamCity 2018.2.2(内部版本 61245)
- Msbuild (Microsoft.NET\Framework\v4.0.30319\msbuild)。所以构建引擎 4.7.2046.0 和 .NET Framework 版本 4.0.30319.42000
- 构建服务器操作系统 Windows Server 2012 R2
- 构建代理操作系统 Windows 10 Pro
解决方案
推荐阅读
- class - Windbg 脚本 - 回显变量的类类型
- android - 模拟每个 { ... } 块内的缺失呼叫
- python - Tensor Tensor("predictions/Softmax:0", shape=(?, 1000), dtype=float32) 不是该图的元素
- xcode - 在 xcode 10.1 上添加可本地化的字符串
- angularjs - 无法将 src img 添加到 $scope.data
- swift - 如何将函数作为可选参数传递 Swift
- javascript - 数组中的 lodash 过滤器
- f# - 通用计量单位/匹配问题
- javascript - 从 JSON URL 检索数据
- sql - 仅在某些条件下使用 Redshift 中的 SQL 对具有相同名称的行进行分组