在VS for Mac中,资源文件 "**/*.resx" 找不到。(MSB3552)

41

我们无法在 Mac 版本的 vs 上构建解决方案,但是相同的解决方案可以在 Windows 上的 vs(vs 2017)上构建并且可以正常工作。

如何解决这个问题?并且可以在两个平台上支持(Windows 上的 vs 和 Mac 上的 vs)

谢谢。 这里输入图片描述 这里输入图片描述

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


2
尝试从VSCode进行调试运行后,我刚刚经历了这种情况,将所有更改还原到已构建的版本,现在即使是那个版本也出现了相同的错误,非常恼人,可能需要重新安装.NET Core SDK和Runtime。删除bin、obj并进行清理重建并没有帮助我。 - Vedran Mandić
你能分享构建时的错误异常吗? - Uthen
嗨@Uthen,我已经解决了这个问题。我的情况是预期的,但花了我一些时间。发生的事情是,我的代码将.csproj文件复制到项目结构中更深的路径中。我的代码中有一些路径解析错误,在第一次运行时工作正常。在第二次构建时,新创建的csproj被包含在内,但在手动检查项目文件夹之前,我不知道这一点。删除额外的.csproj和新的文件夹结构,并修复路径生成代码即可解决此问题。因此,看到这个错误,它必须与文件的错误路径有关。 - Vedran Mandić
20个回答

39

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


在Mac上也是一样。我遇到了一个带有Windows斜杠的文件夹的奇怪引用。 - Intrepid2020
2
这也是我的问题。我在Mac上的工作目录中创建了C:\ProgramData\SomeFolder - Johan Henkens
刚在Ubuntu上遇到了这个问题。谢谢提示! - Joe the Coder
1
当您在代码中使用文件上传或下载并存储在Windows位置时,可能会出现此问题,但在Mac上无法正常工作。 - Renascent
1
在Linux上也发生了同样的问题,帮助我找到了罪犯,谢谢。 - Rafael Palliarini
显示剩余3条评论

17

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

在此输入图片描述


16

我试图解决这个问题花费了两个月,最终找到问题所在。我在项目文件中使用了反斜杠'\',这是Windows风格的路径,但我使用的是Mac,它会创建一个简单名称为“wwwroot\test”的目录(不是嵌套的)。如果我移除那个文件夹,它就能够成功构建。


4

要找到需要删除的有问题的文件,您需要搜索反斜杠,例如:

find ~/my-project-folder -name '*\\*'

1
这帮助我找到了原因,我的情况是这样的。我在Windows下工作了一段时间后,在Linux下打开了一个解决方案。数据库路径配置值被设置为绝对Windows路径,因此它在项目目录下创建了一个类似于“C:\ data”的目录。我删除了那个目录,并重新构建了解决方案。 - Damn Vegetables

3

我也遇到了同样的问题。简单的清理并没有解决我的问题。最终,我删除了bin和obj文件夹。之后,执行一次包还原操作,一切都恢复正常了。很可能是一个包缓存问题。


3

我不确定你是否遇到了和我一样的问题。我有一个在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构建项目时,应检查与文件、文件夹和路径相关的所有代码(例如,创建保存日志文件的文件夹的代码,创建保存上传文件的文件夹的代码等)。


我可能不得不放弃文件夹树并重新克隆项目,以避免这个问题,如果没有这个提示的话。通过多年使用Visual Studio遇到过的一些“微软特色”,我知道即使在Linux上使用VS Code时也可能是这样的情况。 - undefined

2
"dotnet run" 命令每次运行时都会创建一个不必要的密钥文件。我不得不删除这个文件夹才能使它重新工作。这是由于使用了类似于 "C:\SharedDataProtectionKeys" 的 Windows 样式路径,而不是适用于 Windows 和 Linux 环境的相对路径引起的。 不必要的密钥文件

2

今晚我遇到了同样的问题,但最终解决了。我只是进行了一次清理和构建操作,然后问题就得到了解决。

不过,我将项目复制到了一个存储设备上,而没有使用类似 Github 的工具来传输项目。我猜测 bin/obj 文件夹中可能留有来自 Windows 上 VS 的残留文件。


2

遇到了同样的错误;在阅读这些答案后,我想这一定是由于路径使用反斜杠导致的。

我试着删除.csproj文件中引用带有\的文件的行,但没有成功。

花费了我一些时间才发现,某个东西创建了一个wwwroot\ImageCache目录。我删除了这个目录,构建成功了。


1

这可能是另一种发生的可能性。在 Windows (10) 和 VS 2017 上有经验,当移动和重命名一个检出(svn)时。可能是因为存在一些损坏的符号链接。

方法:复制检出而不是移动它,不要跟随任何符号链接。


这就是我的情况,我有一个损坏的符号链接 - Windows 2016。感谢您发布这个!! - boggy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接