2013-04-17 38 views
17

hợp lệ Tôi vừa cài đặt Bản cập nhật 2 cho Visual Studio 2012, giới thiệu hộp thoại Xuất bản mới. Tôi đang cố gắng để làm cho nó làm những gì nó được sử dụng để làm (tiền biên dịch một trang web trước khi xuất bản), và tôi chạy vào lỗi mà nóVS 2012 Xuất bản: Không thể tìm thấy AspnetMergePath

"Can't find the valid AspnetMergePath" 

được ném từ các tập tin Microsoft.Web.Publishing. AspNetCompileMerge.targets. Tôi đã xác nhận rằng tệp aspnet_merge.exe tồn tại ở nhiều nơi trên máy tính của tôi, nhưng

$(GetAspNetMergePath) 

được đánh giá thành chuỗi rỗng vì một lý do nào đó. Tôi phải thiếu một số thiết lập cấu hình, nhưng tôi chưa bao giờ làm rối tung những điều đó trước đây, vì vậy tôi bối rối là tại sao điều này lại bắt đầu đột ngột.

Có ai có thể đưa ra lời khuyên về cách giải quyết vấn đề này không? Tôi đã thực hiện các tiêu chuẩn tìm kiếm Google trên lỗi này và không có gì đã dẫn tôi đến giải pháp đúng.

+0

có thể trùng lặp của ["Không thể tìm thấy AspnetMergePath hợp lệ" trên Visual Web Developer Publish?] (Http://stackoverflow.com/questions/12713714/cant-find-the-valid-aspnetmergepath-on-visual- web-developer-publishing) –

Trả lời

18

Tôi đã gặp phải vấn đề tương tự. Tìm kiếm thông qua tất cả các trang web liên quan đến microsoft, tìm thấy rất nhiều khiếu nại và không có ý định từ microsoft để sửa chữa nó.

Đây là cách tôi làm việc xung quanh hệ thống của mình. Chỉnh sửa tệp Microsoft.Web.Publishing.AspNetConfigurationMerge.targets và thêm dòng sau. Hãy chắc chắn rằng con đường của Microsoft SDK là như nhau trên máy tính của bạn, nếu không sau đó thay đổi nó:

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

đây làm thế nào nó sẽ giống như thế:

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

+0

Cảm ơn bạn đã giúp tôi! Điều đó làm việc hoàn hảo. – adsilb

6

Dưới đây là một giải pháp không yêu cầu thay đổi tập tin đích. Giải pháp thay thế từ http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath đề xuất chuyển các bổ sung thích hợp cho msbuild. Tôi đã có thể để có được nó để làm việc sử dụng này:

msbuild website.publishproj/p: DeployOnBuild = true/p: PublishProfile = Phát hành /p:VisualStudioVersion=12.0/p: AspnetMergePath = "C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Công cụ \ "

Khoá ở đây là thuộc tính AspnetMergePath, bạn có thể cần phải thay đổi nếu Windows SDK được cài đặt trong một vị trí khác. Nếu tôi bao gồm thuộc tính GetAspNetMergePath từ giải pháp khắc phục sự cố, nhưng điều đó có thể cần thiết tùy thuộc vào phiên bản SDK.

17

Tôi đã gặp vấn đề tương tự ngày hôm nay trong khi xây dựng bằng cách sử dụng dòng lệnh msbuild. Việc sửa chữa là sử dụng msbuild.exe trong C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin
và không phải từ C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

Vấn đề là gây ra bởi thực tế là msbuild mới bây giờ là part of visual studio 2013 và không phải .Net framework nữa.

+0

Không có gì làm việc nhưng điều này! Bạn có biết làm thế nào tôi có thể đặt nó vĩnh viễn cho VS 2012? – manishKungwani

+0

Có! Cảm ơn bạn! Một điểm rất lớn từ liên kết của bạn: "Cách MSBuild chọn phiên bản Toolset cho xây dựng dòng lệnh bây giờ giống hệt với cách Visual Studio xây dựng dự án". Tôi có thể đã lưu những ngày theo dõi những sắc thái nhỏ giữa hai người nếu điều này đã được thực hiện ngay từ đầu. –

+0

Chạy vào cùng một vấn đề sau khi chúng tôi cài đặt VS2013 trên máy biên dịch của chúng tôi. Chúng ta có Jenkins khởi động các biên dịch msbuild và các nhiệm vụ xuất bản web, và chúng đột nhiên ngừng hoạt động. Thay đổi Jenkins để sử dụng những thứ cố định ms201 VS2013. –

0

Một tùy chọn khác có tác dụng đối với tôi cùng lỗi này là cài đặt Visual Studio (trong trường hợp của tôi thể hiện). Tôi đã xây dựng ứng dụng một lần trên máy chủ và sau đó từ thời điểm đó, nó được xây dựng chính xác như là một phần của dự án tích hợp liên tục của tôi.

0

tôi đã cùng một vấn đề trong VS 2012 và tất cả tôi đã làm là như sau: "precompile trong xuất bản"

Bấm Publish, Under Publish Web đi đến tab Settings, Bỏ chọn

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