在我们的 ClientApp (ReactJS) 上运行
yarn start
或 yarn build
后,我们遇到了一个奇怪的问题。
我们有一个 ASP.NET Core 3.1 项目,上面运行着 React 中的 SPA。当我们运行yarn start时,它会导致dotnet项目中断,并导致错误:
MSB3552 找不到资源文件“**/*.resx”
MSB4018“GenerateResource”任务意外失败。
在 Visual Studio (2019) 中,项目如下所示:
这会导致构建失败。我无法弄清楚文件已更改(git 未检测到更改)并导致了此问题。
我注意到从命令行运行 dotnet build 时仍然可以工作。
我发现了类似的问题,人们在使用 macOS 时报告了此问题,并且项目文件包含 Windows 路径。我已经检查了项目和解决方案文件,但找不到这样的绝对路径。 在多台计算机(所有 Windows 10 + Visual Studio 2019)上进行了测试,并且都给出了相同的问题。 React 应用程序也在 MacO 上进行编辑,但我们无法识别任何与路径相关的问题。
有人知道是什么原因造成的吗?
更新: 我注意到,当我从 ClientApp 文件夹中删除 node_modules 文件夹时,它会再次在 Visual Studio 中运行。然而,当再次运行yarn时,问题再次出现。
通过排除项目中的 ClientApp 文件夹解决了问题。
相关问题:https://github.com/dotnet/sdk/issues/8659
编辑cs项目文件并添加以下内容:
<PropertyGroup>
<DefaultItemExcludes>node_modules/**;$(DefaultItemExcludes)</DefaultItemExcludes>
</PropertyGroup>
<ItemGroup>
<Compile Remove="ClientApp\**" />
<Content Remove="ClientApp\**" />
<EmbeddedResource Remove="ClientApp\**" />
<None Remove="ClientApp\**" />
</ItemGroup>
当我们的 .NET 应用程序托管 SPA(由任何包管理器安装,例如 npm、pnpm、yarn)时,我也遇到了同样的问题。 VS 试图构建我们的解决方案,但问题是
node_modules
以及 VS 的所有已安装内容在解析其文件系统路径时都存在问题。因此,要么将其排除在 .NET 解决方案/项目中以进行构建,要么删除 node_modules
以构建后端解决方案。