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發布編譯就沒問題了。
浙公網安備 33010602011771號