Search code examples
asp.netmsbuildteamcityweb-deployment-project

Web Deployment Project & TeamCity


I am trying to build a web deployment project 2010 project for a solution. I have installed the Windows SDK and Web Deployment Project 2010 RTW on the build server, as well as copied over the missing .target files for MSBuild.

When attempting to build the project it spits out the following error

C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(1589, 9): error MSB6004: The specified task executable location "C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\aspnet_merge.exe" is invalid.

Unfortunately, searching around Google for results about this error don't reveal anything of much value. Any help to get TeamCity successfully building the web deployment project would be appreciated.


Solution

  • More suitable solution should be to set TargetFrameworkSDKDirectoryBin property in your .wdproj file. For example:

    <TargetFrameworkSDKDirectoryBin>C:\Programmi\Microsoft SDKs\Windows\v7.1\Bin\</TargetFrameworkSDKDirectoryBin>
    

    this setting, used in .dtproj file, override the default setting defined in Microsoft.WebDeployment.targets as you can see here

    <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)">
      <PropertyGroup>
          <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
          <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath>
          <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath>
      </PropertyGroup>
    </Target>
    

    the second AspnetMergePath means that if exists somewhere else a $(TargetFrameworkSDKDirectoryBin) that point to an existing aspnet_merge.exe file, this will be used.