未为“WriteLinesToFile”任务指定所需参数“File”的值

NKl*_*NKl 5 asp.net asp.net-web-api blazor blazor-webassembly

错误 MSB4044 未为“WriteLinesToFile”任务指定所需参数“File”的值。BlazorTutorial.Client C:\Program Files\dotnet\sdk\5.0.400\Sdks\Microsoft.NET.Sdk.BlazorWebAssembly\targets\Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.targets

 // !---Line that gives error
 <WriteLinesToFile
      File="%(_ServiceWorkerIntermediateFile.Identity)"
      Lines="/* Manifest version: $(_ServiceWorkerAssetsManifestVersion) */"
      Condition="'$(_ServiceWorkerAssetsManifestVersion)' != ''" />
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题,或者不知道这里还有什么其他信息可以分享。我查看了互联网,但找不到有关此错误的任何信息。

我尝试过的事情:

  • 我尝试将 sdk 版本 5.0.3 更新到 5.0.4 但没有成功。
  • 无意义但更新的视觉工作室。
  • 我将项目从 git 恢复到工作版本仍然遇到相同的错误。
  • 我尝试打开新项目,没有错误。

编辑1:

  • (@Nicola Biada 谢谢)清除项目 > 退出 Visual Studio > 删除 bin 和 obj 文件夹 > 打开项目 > 重建项目 > 出现相同错误

已解决,但不知道为什么: *

// from server's program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
       Host.CreateDefaultBuilder(args)
           .ConfigureWebHostDefaults(webBuilder =>
           {       
                webBuilder.UseContentRoot(Directory.GetCurrentDirectory()); // Deleted this line
                webBuilder.UseWebRoot("wwwroot"); // And this
                webBuilder.UseStartup<Startup>();
           });
Run Code Online (Sandbox Code Playgroud)

之后,删除服务器端的 wwwroot 文件夹,魔法就变成真正的错误了。

Mar*_*ach 5

对我来说,Blazor.csproj 的这一部分丢失了。

  <ItemGroup>
    <ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)