无法复制文件,找不到路径的一部分
Posted
技术标签:
【中文标题】无法复制文件,找不到路径的一部分【英文标题】:Unable to copy file, Could not find a part of the path 【发布时间】: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 ,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。 【参考方案1】:这种区分大小写会是问题吗?
Linux 中与复制相关的命令区分大小写。 (您正在 Ubuntu 机器上运行管道)。所以我同意case sensitivity
可能是问题所在。
看起来您的School.API
项目依赖于School.Services
项目,因此您需要检查这两个项目以了解该文件夹生成为pt-BR
的原因。
您应该检查项目文件和这两个项目的资源文件。另外,作为一种快速解决方法,我建议您可以将资源文件重命名为Controllers.UserProfileController.pt-BR.resx
。见Supported Culture Codes
,pt-BR
是代表Portuguese (Brazil)
的原始格式。
【讨论】:
以上是关于无法复制文件,找不到路径的一部分的主要内容,如果未能解决你的问题,请参考以下文章