c# - 无法复制文件,找不到部分路径

标签 c# asp.net localization azure-pipelines culture

我的网站有本地化(多语言)

我为每种文化使用 ASP.NET 资源文件,例如:

  • Controllers.UserProfileController.en-ca.resx
  • Controllers.UserProfileController.es-us.resx
  • Controllers.UserProfileController.pt-br.resx

等等..

我在 Startup.cs 中也有这一行

services.AddLocalization(options => options.ResourcesPath = "ResourcesDirectoryFolderName");

当我构建和发布网站时,它会在 bin 文件夹中为每种文化创建一个文件夹,例如:

  • C:\User\Documents\SchoolApp\School.API\bin\Release\netcoreapp3.1\en-ca
  • C:\User\Documents\SchoolApp\School.API\bin\Release\netcoreapp3.1\es-us
  • C:\User\Documents\SchoolApp\School.API\bin\Release\netcoreapp3.1\pt-BR

在每个文件夹中,我都有一些 DLL 文件。这很好。

当我使用 Azure 管道编译/构建/发布应用程序 (CI/CD) 时出现问题。它正在抛出错误:

##[error] /usr/share/dotnet/sdk/3.1.401/Microsoft.Common.CurrentVersion.targets(4364,5): Error MSB3021: Unable to copy file "/home/vsts/work/1/s/School.Services/bin/Release/netcoreapp3.1/pt-br/School.Services.resources.dll" to "bin/Release/netcoreapp3.1/pt-br/School.Services.resources.dll". Could not find a part of the path '/home/vsts/work/1/s/School.API/bin/Release/netcoreapp3.1/pt-br/School.Services.resources.dll'.

如果在本地一切正常。在我的本地主机上构建或发布时,我没有收到错误消息。这发生在 Azure Pipelines 上。

这只发生在 pt-br 上。对于其他文化,我没有收到错误。在添加 pt-br 之前我没有收到任何错误。

请注意,资源文件名中使用了pt-br(小写),但是在bin文件夹中生成文件夹时,它被命名为pt-BR(大写BR) .这种区分大小写可能是问题所在吗?也许在复制文件时,Azure Pipelines 正在寻找文件夹名称 pt-br 但实际上是系统生成的文件夹名称 pt-BR?为什么其他文化没有遇到这个问题,而只有 pt-br

我按照此处的说明构建了我的多语言应用程序:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1

我该如何解决?

最佳答案

Could this case sensitivity be the problem?

Linux 中与复制相关的命令是区分大小写的。 (你在 Ubuntu 机器上运行管道)。所以我同意 case sensitivity 可能是问题所在。

看起来你的School.API项目依赖于School.Services项目,所以你需要检查这两个项目,了解为什么文件夹生成为 pt-BR.

你应该检查这两个项目的项目文件和资源文件。此外,作为一种快速解决方法,我建议您可以将资源文件重命名为 Controllers.UserProfileController.pt-BR.resx。参见 Supported Culture Codes ,pt-BR 是代表Portuguese (Brazil) 的原始格式。

关于c# - 无法复制文件,找不到部分路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63805983/

相关文章:

c# - MouseLeftButtonUp 不触发

c# - 在 linq-to-sql 查询中将字符串转换为 int : how to deal with values which cannot be converted?

c# - 正则表达式模式帮助

c# - 无法加载文件或程序集 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

objective-c - 将 NSTimeInterval 转换为 "1w 3d 4h 15m 21s"格式的字符串,语言环境友好吗?

c++ - 在 Windows Phone 8 C++ 中获取当前系统语言

ios - Xcode 本地化和国际化 : Exporting for Localization (XLIFF) does not export Info. plist 条目

c# - Autofac RegisterInstance 与 SingleInstance

c# - 在 C# 中的谷歌图像搜索

sql - azure 上托管的 .net 应用程序停止工作并发生异常 [Win32Exception (0x80004005) : Access is denied] [SqlException (0x80131904):