2011-07-07 18 views
7

私は解決のためのWeb配置プロジェクト2010プロジェクトを構築しようとしています。ビルドサーバーにWindows SDKとWeb Deployment Project 2010 RTWをインストールしただけでなく、MSBuildのファイルである.targetが不足しています。Web配置プロジェクトとTeamCity

それは

C以下のエラーを出してくれるプロジェクト構築しようとすると:\プログラムファイル\ MSBuildの\マイクロソフト\ WebDeployment \ V10.0の\のMicrosoft.WebDeployment.targets(1589、9):エラーMSB6004:指定されたタスク実行可能な場所 "C:¥Program Files¥MSBuild¥Microsoft¥WebDeployment¥v10.0¥aspnet_merge.exe"は無効です。

残念ながら、このエラーに関する結果をGoogleの周りで検索しても、大きな価値はありません。 TeamCityがWebデプロイメントプロジェクトを成功裏に構築するための助けとなることは感謝しています。

答えて

3

さらに適切なソリューションは、.wdprojファイルにTargetFrameworkSDKDirectoryBinプロパティを設定することです。たとえば:あなたはここに

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

AspnetMergePathを見ることができるよう

この設定は、.dtprojファイルで使用する場合などは、どこかに存在することを意味Microsoft.WebDeployment.targetsで定義されたデフォルト設定を上書きそれ以外の場合は、既存のaspnet_merge.exeファイルを指す$(TargetFrameworkSDKDirectoryBin)が使用されます。

4

[OK]をクリックしてaspnet_mergeは、間違った場所に指摘されている - 私のビルドスクリプトでは、私は次のように終わる何か持っている:

<ItemGroup> 
    <ASPNETPath Include="F:\Program Files\Microsoft SDKs\Windows\v6.0A\bin" /> 
</ItemGroup> 

<Target Name="ASPNET Merge"> 
    <AspNetMerge 
     ExePath="@(ASPNETPath)" 
     ApplicationPath=".\Release" 
     SingleAssemblyName="CoreMicrosite" 
     /> 
</Target> 

はそれを試してみて、

+1

クールで、 'Microsoft.WebDeployment.targets'の' NETFX 4.0 Tools'ディレクトリに 'aspnet_merge.exe'の' ExePath'を設定しましたが、正しくビルドされました。ありがとう –

+0

優秀 - それは今やうれしい! – stack72

2

変更行1562で次のノードを参照しますファイル「Microsoft.WebDeployment.targets」に:

<Target 
     Name="GetAspNetMergePath" 
     DependsOnTargets="$(GetAspNetMergePathDependsOn)"> 
     <PropertyGroup> 
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
      <!-- OLD 
      <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath> 
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath> 
      --> 
      <AspnetMergePath>C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\</AspnetMergePath> 
      <AspnetMergePath Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\</AspnetMergePath> 
     </PropertyGroup> 
    </Target> 

私は、適切なMicrosoft接続ページでの回避策のコメントを追加しました:
http://connect.microsoft.com/VisualStudio/feedback/details/706047/visual-studio-2010-web-deployment

+0

+1他の答えとして、aspnet_merge.exeは、devマシンとビルドサーバーの同じ場所にあると仮定します。これにより問題は解決されますが、最新のSDKは7.0Aではなく7.1であることに注意してください。 – si618

関連する問題