VS 2012发布:找不到有效的AspnetMergePath

ads*_*ilb 17 asp.net publish visual-studio-2012

我刚刚为Visual Studio 2012安装了Update 2,它引入了一个新的Publish对话框.我试图让它做它过去做的事情(在发布之前预编译一个网站),我遇到了它的错误

"Can't find the valid AspnetMergePath"
Run Code Online (Sandbox Code Playgroud)

这是从文件Microsoft.Web.Publishing.AspNetCompileMerge.targets抛出的.我已经确认文件aspnet_merge.exe存在于我的计算机上的多个位置,但是

$(GetAspNetMergePath) 
Run Code Online (Sandbox Code Playgroud)

由于某种原因正在评估空字符串.我必须错过一些配置设置,但我从来没有搞过那些,所以我很困惑为什么这会突然开始.

有人可以提供有关如何解决此问题的建议吗?我已经完成了标准的谷歌搜索这个错误,没有任何东西让我找到正确的解决方案.

小智 18

我遇到了同样的问题.通过所有微软相关网站搜索,发现了很多抱怨,并没有从微软修复它的意图.

在这里我是如何在我的系统中进行的.编辑Microsoft.Web.Publishing.AspNetConfigurationMerge.targets文件并添加以下行.请确保您的PC上的Microsoft SDK路径是相同的,如果没有,则更改它:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>
Run Code Online (Sandbox Code Playgroud)

这里应该是这样的:

  <Target
  Name="GetAspNetMergePath"
  DependsOnTargets="$(GetAspNetMergePathDependsOn)"
  Condition ="'$(GetAspNetMergePath)' != 'false'">
<PropertyGroup>
  <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>
  <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" />
Run Code Online (Sandbox Code Playgroud)


sof*_*eda 17

我在使用msbuild命令行构建时遇到了同样的问题.修复是使用C:\ Program Files(x86)\ MSBuild\12.0\Bin中的
msbuild.exe而不是C:\ Windows\Microsoft.NET\Framework\v4.0.30319

问题是由于新的msbuild现在已成为visual studio 2013的一部分,而不再是.Net框架.

  • 虽然这可能是一个很好的答案,但我不知道如何实际尝试 - 更多的细节可能是好的!知道该做什么是一件事,知道如何做到这一点完全是另一回事 (2认同)

tsp*_*uld 6

这是一个不需要更改目标文件的解决方案.来自http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath的解决方法建议将其他属性传递给msbuild.我能够使用它来实现它:

msbuild website.publishproj/p:DeployOnBuild = true/p:PublishProfile = Release /p:VisualStudioVersion=12.0/p:AspnetMergePath ="C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5 .1工具\"

这里的关键是AspnetMergePath属性,如果Windows SDK安装在不同的位置,您可能需要更改该属性.如果我GetAspNetMergePath在变通方法中包含该属性,则会失败,但根据SDK版本可能需要这样做.