VS 2012 Publish: Can't find the valid AspnetMergePath VS 2012 Publish: Can't find the valid AspnetMergePath asp.net asp.net

VS 2012 Publish: Can't find the valid AspnetMergePath


I hit the same problem. Searched through all microsoft related sites, found a lot of complaints and no intention from microsoft to fix it.

Here how I worked it around at my system. Edit the Microsoft.Web.Publishing.AspNetConfigurationMerge.targets file and add the following line. Please make sure that the Microsoft SDK path is the same on your PC, if not then change it:

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

Here how it should look like:

  <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" />


I had the same issue today while building using msbuild command line. The fix is to use the msbuild.exe in C:\Program Files (x86)\MSBuild\12.0\Bin
and not from C:\Windows\Microsoft.NET\Framework\v4.0.30319

The issue is caused by the fact that new msbuild is now part of visual studio 2013 and not .Net framework any more.


Here is a solution that does not require changing the targets file. The workaround from http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath suggests passing additional properteries to msbuild. I was able to get it to work using this:

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 Tools\"

The key here is the AspnetMergePath property, which you may need to change if the Windows SDK is installed in a different location. If I include the GetAspNetMergePath property from the workaround it fails, but that may be needed depending on the SDK version.