2011-07-07 47 views
7

Tôi đang cố gắng xây dựng dự án triển khai dự án web 2010 cho một giải pháp. Tôi đã cài đặt Windows SDK và dự án triển khai Web 2010 RTW trên máy chủ xây dựng, cũng như được sao chép trên các tệp .target thiếu cho MSBuild.Dự án Triển khai Web & TeamCity

Khi cố gắng để xây dựng dự án nó spits ra lỗi sau

C: \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ Microsoft.WebDeployment.targets (1589, 9): lỗi MSB6004: Vị trí thực thi tác vụ được chỉ định "C: \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ aspnet_merge.exe" không hợp lệ.

Thật không may, tìm kiếm trên Google về kết quả về lỗi này không tiết lộ bất kỳ giá trị nào. Bất kỳ trợ giúp nào để TeamCity xây dựng thành công dự án triển khai web sẽ được đánh giá cao.

Trả lời

3

Giải pháp phù hợp hơn nên đặt thuộc tính TargetFrameworkSDKDirectoryBin trong tệp .wdproj của bạn. Ví dụ:

thiết lập này, được sử dụng trong .dtproj tập tin, ghi đè lên các thiết lập mặc định theo quy định tại Microsoft.WebDeployment.targets như bạn có thể thấy ở đây

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

thứ hai AspnetMergePath có nghĩa rằng nếu tồn tại ở đâu đó else một $(TargetFrameworkSDKDirectoryBin) trỏ đến một tập tin aspnet_merge.exe hiện có, điều này sẽ được sử dụng.

4

ok aspnet_merge của bạn đang được chỉ ra địa điểm sai - trong xây dựng kịch bản của tôi có cái gì đó kết thúc như sau:

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

thử nó và xem

+1

Tuyệt vời, tôi đặt 'ExePath' cho' aspnet_merge.exe' trong thư mục 'NETFX 4.0 Tools' trong' Microsoft.WebDeployment.targets' và nó đang xây dựng chính xác ngay bây giờ. Cảm ơn –

+0

tuyệt vời - vui vì nó hoạt động! – stack72

2

Thay đổi nút sau tại dòng 1562 trong file "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> 

tôi thêm một nhận xét cách giải quyết trên thích hợp trang Microsoft Connect:
http://connect.microsoft.com/VisualStudio/feedback/details/706047/visual-studio-2010-web-deployment

+0

+1 như các câu trả lời khác giả sử aspnet_merge.exe nằm trong cùng một vị trí trên máy dev và máy chủ xây dựng. Điều này khắc phục sự cố nhưng lưu ý rằng SDK mới nhất là 7.1, không phải 7.0A. – si618

Các vấn đề liên quan