找不到资源文件“**/*.resx”。 (MSB3552) 在 VS for Mac 上

Posted

技术标签:

【中文标题】找不到资源文件“**/*.resx”。 (MSB3552) 在 VS for Mac 上【英文标题】:Resource file "**/*.resx" cannot be found. (MSB3552) on VS for Mac 【发布时间】:2018-01-18 07:25:07 【问题描述】:

我们无法在 vs for Mac 版本上构建解决方案,但相同的解决方案可以在 vs for windows(vs 2017)上构建,并且有效。

如何解决这个问题?并且可以同时支持(与 Windows 和 Mac 相比)

谢谢。

/Library/Frameworks/Mono.framework/Versions/5.0.1/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets

【问题讨论】:

在尝试从 VSCode 调试运行后刚刚体验到这一点,将所有更改恢复为已构建的版本,现在即使失败并出现相同的错误,非常烦人,proly 将不得不重新安装 .NET核心 SDK 和运行时。删除 bin、obj 和干净的重建对我没有帮助。 构建时可以分享错误异常吗? 嗨@Uthen,我已经解决了这个问题。我遇到的情况是预期的,但花了我一段时间。发生的事情是我的代码正在以更深的路径复制项目结构内的 .csproj 文件。我的代码中有一些路径解析错误,在第一次运行时运行良好。在第二次构建中,包含了新创建的 csproj,但在手动检查项目文件夹之前,我并没有意识到这一点。删除额外的 .csproj 和新文件夹结构并修复路径生成代码修复了此问题。所以看到这个错误一定是文件路径错误。 【参考方案1】:

检查 Finder,就我而言,问题出在路径上:

【讨论】:

【参考方案2】:

“dotnet run”命令在我每次运行该命令时都会创建一个不必要的密钥文件。我不得不删除此文件夹以使其再次工作。这是由于使用 Windows 样式路径(如“C:\SharedDataProtectionKeys”)而不是适用于 Windows 和 Linux 环境的相对路径引起的

【讨论】:

【参考方案3】:

在 Mac 上的项目子树中有一个奇怪的文件夹。就我而言,它是 c\/output/。

删除该文件夹,构建将成功。

然后修复开发人员使用 Windows 特定路径分隔符 ('\') 而不是 Path.DirectorySeparatorChar 的代码部分。

【讨论】:

【参考方案4】:

还有另一种可能性。在 Windows (10) 和 VS 2017 移动并重命名结帐时有经验 (svn)。可能是因为有一些损坏的符号链接。

有什么帮助:复制结帐而不是移动它,不要点击任何符号链接。

【讨论】:

【参考方案5】:

在 macOS 中,您可以创建一个包含斜杠或反斜杠的文件夹。

macOS 示例上的问题代码:

var path = Path.Combine(HostingEnvironment.ContentRootPath, "UploadedAttachments\Answer");

if (!Directory.Exists(path))

    Directory.CreateDirectory(path);

【讨论】:

几年前我在下面发了同样的帖子:) 是的,困难时期【参考方案6】:

我不确定您是否遇到与我相同的问题。我有一个在 Windows 上运行的 .NET Core 项目,但是当我尝试在 macOS 上运行该项目时,我收到了错误消息:

错误 MSB3552:找不到资源文件“**/*.resx”。

在我的项目中,我有一个将日志文件存储在文件夹中的配置

"WriteTo": [
  
    "Name": "RollingFileAlternate",
    "Args": 
      "logDirectory": ".\\Logs",
      "fileSizeLimitBytes": 10485760
    
  
]

我第一次运行项目时,这将创建一个名为 Logs 的文件夹,但是当我在 macOS 上运行时,它将创建一个名为 .\Logs 的隐藏文件夹。所以这是一个问题,因为之后项目在构建时会出现该错误。

解决方案是将配置更改为:

 "WriteTo": [
  
    "Name": "RollingFileAlternate",
    "Args": 
      "logDirectory": "Logs",
      "fileSizeLimitBytes": 10485760
    
  
]

现在,该项目可以在 macOS 上运行了。

由于 Windows 在目录路径中使用反斜杠,而 macOS 使用斜杠,当您需要在 Windows 中为 macOS 构建项目时,您应该检查所有与文件、文件夹和路径相关的代码(例如,代码创建用于保存日志文件的文件夹,创建用于保存上传文件的文件夹等)。

【讨论】:

【参考方案7】:

我们删除了 obj 和 bin 但不起作用 我们删除了所有使用“\”创建的文件,但该项目不起作用。 最后,我们从 git 中提取项目并再次构建,它可以工作 (注意:从 git 克隆项目时,我们不做新的提交)

我认为它可能发生在缓存或类似情况

【讨论】:

【参考方案8】:

我在 osx 上运行 dotnet core 并且遇到了同样的问题。 问题是我使用 Windows 路径生成了一个文件夹。 在磁盘上创建时,由于其命名为 \Uploads,它在 Finder 中不可见。执行ls -la 并查看其中是否有任何奇怪的文件夹或文件。 See Image

【讨论】:

在 mac 上也是如此。我对带有 Windows 斜杠的文件夹也有一个奇怪的引用。 这也是我的问题。在我的工作目录中的 mac 上创建 C:\ProgramData\SomeFolder 刚刚在 Ubuntu 上发生过这种情况。感谢您的提示! 当您处理文件上传或下载并存储在代码中的 windows 位置时会出现此问题,而这在 mac 中不起作用... 在 linux 上也发生在我身上,帮助我找到了罪魁祸首,谢谢【参考方案9】:

有同样的错误;认为这必须是由于阅读这些答案后使用反斜杠的路径。

我在 .csproj 文件中删除了使用 \ 引用文件的行,但无济于事。

我花了一段时间才找到它,但我注意到 something 创建了一个wwwroot\ImageCache 目录。我删除了这个目录并且构建工作正常。

【讨论】:

【参考方案10】:

验证在您的项目文件结构中您没有生成任何新文件,并且在我的场景中您没有创建任何新的 .csproj、.vbproj 或 .fsproj 文件(可能嵌套在某个深处)。深层文件路径也可能导致此非详细问题。确保不要将东西嵌套得太深。

【讨论】:

【参考方案11】:

我试图解决这个问题像两个月一样,终于找到了问题所在。我在 Windows 样式路径的项目文件中有反斜杠“\”,但我使用的是 Mac,所以它正在创建具有纯名称“wwwroot\test”(未嵌套)的目录。如果我删除该文件夹,它会成功构建。

【讨论】:

【参考方案12】:

我今天在 VS for Mac 上进行了测试(上次更新),只是删除了我的解决方案中的一些源代码并重新构建了所有项目,令人难以置信的是它的工作和我的问题得到了解决。

【讨论】:

【参考方案13】:

这里也有同样的问题。简单的清洁对我不起作用。我最终删除了 bin 和 obj 文件夹。之后,恢复软件包,一切都很好。可能是包缓存问题。

【讨论】:

【参考方案14】:

今天晚上我遇到了同样的事情,并且我得到了它的工作。我最终只是做了一个干净和一个构建,它工作得很好。

不过,我确实将项目复制到了 U 盘上,并且我没有使用 Github 之类的东西来传输项目。我猜它在 bin/obj 目录中有一些来自 Windows 上 VS 的残留物。

【讨论】:

以上是关于找不到资源文件“**/*.resx”。 (MSB3552) 在 VS for Mac 上的主要内容,如果未能解决你的问题,请参考以下文章

asp.net MVC 中添加了Resource.resx资源文件,本地使用正常,部署到IIS后提示找不到指定的文件

在 wpf 中找不到“资源”文件

找不到适合指定文化或中性文化的任何资源

Visual Studio:在要添加到项目的项目列表中找不到“资源文件”

.net网站如何实现多国语言切换?

如何创建 resx 文件