VS 2022 WEB发布编译失败
VS2022当安装在非默认路径时,每次更新后,在发布时,就会出来编译失败的提示,比如这样:
C:\VS2022\Preview\MSBuild\Microsoft\VisualStudio\v17.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): 错误 : Can't find the valid AspnetMergePath
这时关闭VS,用管理员模式(不然改了不能保存)打开一个记事本,然后打开上面的这个文件,查找AspnetMergePath是这样的
<Target
Name="GetAspNetMergePath" DependsOnTargets="$(GetAspNetMergePathDependsOn)" Condition ="'$(GetAspNetMergePath)' != 'false'"> <PropertyGroup> <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> </PropertyGroup> <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" Text="Can't find the valid AspnetMergePath" /> </Target>
在AspnetMergePath 这一节,可以看到它需要一个TargetFrameworkSDKToolsDirectory,因为AspnetMergeName,即aspnet_merge.exe就放这里面。但恰恰就是这个变量不存在。
去C盘找这个文件,原来放在C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools里面。
把这个路径添加进去,跟在AspnetMergeName后面就行,注意路径最后要加一个反斜杠,因为在引用的时候后面直接带了文件名,如果不加反斜杠,还是会说找不到文件。
<PropertyGroup>
…… <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\</TargetFrameworkSDKToolsDirectory> …… </PropertyGroup>
再打开VS发布编译就没问题了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通