.NET 6解决方案编译报错:GenerateStaticWebAsssetsPropsFile任务意外失败
问题描述
我有一个包含约40个项目的.NET 6解决方案,编译时触发以下错误:
The "GenerateStaticWebAsssetsPropsFile" task failed unexpectedly.
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users..\SolutionName\ProjectName\obj\Debug\net6.0\staticwebassets\msbuild.MyProjectName.Microsoft.AspNetCore.StaticWebAssets.props'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalWriteAllBytes(String path, Byte[] bytes, Boolean checkHost)
at Microsoft.AspNetCore.Razor.Tasks.GenerateStaticWebAsssetsPropsFile.ExecuteCore()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
错误指向.NET 7 SDK的路径 C:\Program Files\dotnet\sdk\7.0.100\Sdks\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.StaticWebAssets.Pack.targets,但所有项目均以.NET 6为目标框架,且仅在更新Visual Studio并安装.NET 7后出现此问题。
解决步骤
指定解决方案使用.NET 6 SDK:在解决方案根目录创建
global.json文件,内容如下(替换为你已安装的.NET 6 SDK具体版本):{ "sdk": { "version": "6.0.408", "rollForward": "latestMinor" } }该文件会强制MSBuild使用指定版本的.NET 6 SDK,避免自动选用更高版本的.NET 7 SDK。
清理项目缓存:
- 删除所有项目下的
obj和bin目录 - 在Visual Studio中依次执行「清理解决方案」→「重建解决方案」
- 或在终端运行命令:
dotnet clean dotnet build --no-incremental
- 删除所有项目下的
调整StaticWebAssets配置:
打开出错项目的.csproj文件,若存在<StaticWebAssetsGeneratePropsFile>true</StaticWebAssetsGeneratePropsFile>配置,可尝试移除;如果项目不需要StaticWebAssets功能,直接禁用:<PropertyGroup> <EnableStaticWebAssets>false</EnableStaticWebAssets> </PropertyGroup>修复.NET 6 SDK组件:
打开Visual Studio安装程序,选择「修改」,确认.NET 6 SDK及ASP.NET Core相关组件已安装,对.NET 6 SDK执行「修复」操作(在「单个组件」列表中找到对应SDK,点击「修改」→「修复」)。
内容的提问来源于stack exchange,提问作者Hakan Fıstık

