Azure devops 使用WebPublishMethod打包的MSBuild在zip文件中生成错误的文件名

Azure devops 使用WebPublishMethod打包的MSBuild在zip文件中生成错误的文件名,azure-devops,msbuild,web-publishing,Azure Devops,Msbuild,Web Publishing,我们在Azure DevOps上有标准CI/CD。最近我们发现,名称中带有变音符号(重音)的文件发布错误。似乎所有的字符都是utf-8(或者类似的东西)而不是原始字符 在生成阶段,使用公共msbuild命令和参数执行Visual Studio生成任务是正常的 /t:XXX /p:BuildProjectReferences=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:S

我们在Azure DevOps上有标准CI/CD。最近我们发现,名称中带有变音符号(重音)的文件发布错误。似乎所有的字符都是utf-8(或者类似的东西)而不是原始字符

在生成阶段,使用公共msbuild命令和参数执行Visual Studio生成任务是正常的

/t:XXX /p:BuildProjectReferences=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\XXX" /p:outputDir="$(build.artifactstagingdirectory)\XXX" /P:PackageTempRootDir=
生成后,zip文件包含编码的文件名。所以编码是构建过程的一部分

尝试在示例项目上从本地计算机调用msbuild并发布到包,但遇到了相同的问题。输出zip包包含编码的文件名。现在不可能提取zip文件以获得原始命名

我的问题是-如何强制构建和打包任务不编码名称,或者使用提取zip任务获取项目中的filanames?我没有找到如何从工件中提取编码文件的信息

最近我们发现,名称中带有变音符号(重音)的文件发布错误

根据我的测试,我可以重现这个问题。当文件夹名或文件名包含变音符号时,它们的名称将在Msbuild之后编码为其他格式

例如:

正如您所说,本地msbuild中也存在此问题,因此msbuild本身也存在此问题。由于msbuild使用的SDK可能是较低版本,因此无法识别这些特殊字符

恐怕msbuild中没有这样的参数来强制维护文件的原始编码

解决方法1:

在Azure Devops中,您可以使用
提取文件
任务来解压缩zip文件

然后,您可以使用Powershell任务运行脚本以更改文件或文件夹名称:

文件夹:

Rename-Item 'C:\xxx\diakritik├│s'  -newName 'C:\xxxm\diakritikós'
文件:

最后,您可以使用
归档文件
任务再次压缩文件

样本:

解决方法2:

根据我的测试,您可以使用dotnet构建模板

在这种情况下,dotnetbuild可以保留文件名


对于问题本身,我建议您可以在此处报告:.

Thnx以供确认。在MSBuild回购中报告。是的,目前唯一的解决办法似乎是使用自定义任务打包和解包。无法进行dotnet构建,它是完整的.net framework Web应用程序项目。
Rename-Item -Path "c:\logfiles\daily_file.txt" -NewName "monday_file.txt"