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框架.
这是一个不需要更改目标文件的解决方案.来自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版本可能需要这样做.