【发布时间】:2020-09-09 06:34:11
【问题描述】:
我的网站有本地化(多语言)
我为每种文化使用 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) 时出现问题。它正在抛出错误:
##[错误] /usr/share/dotnet/sdk/3.1.401/Microsoft.Common.CurrentVersion.targets(4364,5): 错误 MSB3021:无法复制文件 “/home/vsts/work/1/s/School.Services/bin/Release/netcoreapp3.1/pt-br/School.Services.resources.dll” 到“bin/Release/netcoreapp3.1/pt-br/School.Services.resources.dll”。 找不到路径的一部分 '/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://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1
我该如何解决?
【问题讨论】:
-
您好,请问这个问题呢?下面的答案是否解决了您的问题,如果是,您可以 Accept it as an Answer ,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。
标签: c# asp.net localization azure-pipelines culture