MS-Build 2017 “Microsoft.WebApplication.targets” bị thiếu


85

Tôi đang cố gắng nâng cấp trình xây dựng của chúng tôi (jenkins) từ Visual Studio 2015 lên 2017. Chúng tôi đang xây dựng thông qua MS-Build. Tôi đã tải xuống và cài đặt các công cụ MS-Buld như được mô tả trong câu trả lời này . Nếu tôi biên dịch các dự án của mình, tôi sẽ gặp lỗi Microsoft.WebApplication.targetskhông tìm thấy.

Lỗi chi tiết:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

Tôi đã thực hiện một tìm kiếm trong thư mục MS-Build:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

Như có thể thấy tệp tồn tại cho các phiên bản trình biên dịch cũ, nhưng đối với v15.0 thì nó bị thiếu.

Tôi cũng đã cài đặt Visual Studio 2017 trên máy chủ xây dựng. Dự án xây dựng thành công nếu tôi biên dịch bằng Visual Studio 2017.

Bất kỳ gợi ý làm thế nào để giải quyết vấn đề này? Một giải pháp khả thi là tạo một liên kết tượng trưng từ C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsđiểm đến các tệp v14.0 cũ (nằm bên dưới C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Cám ơn



1
Tôi đã gặp sự cố này với một dự án sử dụng VS 2019. Cách khắc phục sự cố bằng cách mở tệp csproj, xác định dòng <Nhập dự án = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplication \ Microsoft.WebApplication.targets "/> và thay thế bằng <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplication \ Microsoft.WebApplication.targets "/>
tmutton

Câu trả lời:


124

Trông giống như bạn đang thiếu khối lượng công việc cho "Web phát triển xây dựng các công cụ": Microsoft.VisualStudio.Workload.WebBuildTools.

Bạn có thể cài đặt nó bằng cách tải xuống trình cài đặt công cụ xây dựng từ đây (VS2017) hoặc tại đây (VS2019) rồi chạy

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

hoặc mở vs_buildtools.exevà chọn thành phần "Công cụ xây dựng phát triển web" trong GUI:

ảnh chụp màn hình từ GUI


3
làm thế nào tôi có thể chạy lệnh này nó cho 'vs_buildtools.exe' không được công nhận là một lỗi lệnh nội bộ hay bên ngoài trong công cụ nhà phát triển 2017
Developerzzz

26
Nếu bạn đã tải xuống trình cài đặt "Build Tools for Visual Studio 2017" ( visualstudio.com/thank-you-downloading-visual-studio/… ), thì bạn có thể khởi chạy trình cài đặt đó, nhấn Modify và đánh dấu vào "Web development task build "hộp kiểm mô-đun khối lượng công việc. Sau đó nhấp vào nút Sửa đổi và để trình cài đặt hoàn tất.
Spiralis

Có, bạn cần sử dụng dòng lệnh trên để cài đặt. Bạn không thể tìm thấy nó trên GUI.
sky91

4
Tôi đã cài đặt Build Tools for Visual Studio 2017với Web development build taskstừ liên kết được cung cấp nhưng nó vẫn không tạo C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsthư mục..tôi cũng không thấy vs_buildtools.exe.. tôi đã tìm kiếm toàn bộ `c: '
LP13

1
cảm ơn..có vẻ như từ VS 2017 giá trị của $(MSBuildExtensionsPath)đã được thay đổi thành C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/… đó
LP13,

88

Câu trả lời được chấp nhận ở trên là đúng về mặt kỹ thuật, chỉ là chưa đầy đủ, hơi khó hiểu, ít nhất là đối với tôi và cần thêm một bước để Visual Build Professional hoạt động.

  1. vs_buildtools.exe về mặt kỹ thuật không tồn tại. tôi phải tạo một câu hỏi hỏi tệp đó ở đâu. Rõ ràng là vs_buildtools.exe là vs_buildtools _ *******. Exe và là chương trình cài đặt thực tế. Ngoài ra, "-add ***" được đề cập ở trên chỉ là cách viết tắt. Người ta có thể chuyển đến GUI và kiểm tra cả hai tác vụ quy trình làm việc. Điều đó làm điều tương tự. Tôi kết thúc việc có tệp vs_buildtools, mặc dù không cần nó.

  2. VSB Pro vẫn không xây dựng dự án của tôi. Tôi đã gặp lỗi tương tự ở trên. Nước sốt bí mật chỉ đơn giản là để sao chép các WebApplicationsthư mục trong C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0đểC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0 . Sau đó tôi đã xây dựng lại dự án và tất cả đều ổn. Tôi đã đặt tệp WebApplication.targets ở vị trí mong đợi.

Tại sao Microsoft không thể làm được điều đó ngoài tôi. Ngoài ra, tại sao cài đặt riêng biệt. VS17 cài đặt một lượng lớn nội dung. Công cụ xây dựng được ngụ ý, như mọi khi. Bất cứ điều gì.

Tôi đăng câu trả lời này vì hy vọng nó sẽ giúp ích cho những người khác. Tôi đã rơi vào bẫy và mất khá nhiều thời gian với dự án của mình không được xây dựng. Tôi hy vọng rằng câu trả lời này làm rõ mọi thứ một chút.


4
Đã xác nhận rằng "Công cụ xây dựng cho Visual Studio 2017" thực sự sao chép mục tiêu sang C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 trong khi msbuild thực sự cố gắng xác định mục tiêu tại C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, vì vậy tôi phải sao chép các thư mục. Rõ ràng cái đầu tiên được sử dụng bởi IDE và cái thứ hai được sử dụng bởi msbuild độc lập. Thật kỳ lạ.
ZZZ

1
Bạn không nên sao chép bất cứ thứ gì theo cách thủ công. vs_buildtools.exe chỉ là Visual Studio Installer. Nó giúp bạn cài đặt Công cụ xây dựng hoặc Visual Studio. Đối với cả hai, bạn có thể cài đặt các khối lượng công việc và thành phần khác nhau. Nếu bạn muốn cài đặt khối lượng công việc cho Visual Studio, bạn cần nhấp vào nút "Sửa đổi" cho nó. Bằng cách đó, bạn có thể cài đặt các thành phần cần thiết.
Vladimir Serykh

2
Chắc chắn rồi, nhưng vấn đề là trình cài đặt Visual Studio dường như không đặt thư mục Ứng dụng Web một cách đáng tin cậy ở cả hai vị trí cần thiết. Sao chép thủ công, như Sarah đề xuất, là cách duy nhất tôi quản lý để có được các bản dựng hoạt động trên máy dev của mình một cách đáng tin cậy.
Bart Đọc

21

Tôi đã gặp sự cố tương tự sau khi nâng cấp từ Visual Studio 2015 lên 2017. Khi tôi cố gắng tải dự án ứng dụng web, nó đã gửi cho tôi thông báo lỗi:

Không tìm thấy dự án đã nhập "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplication \ Microsoft.WebApplication.targets". Ngoài ra, cố gắng tìm "WebApplication \ Microsoft.WebApplication.targets" trong (các) đường dẫn tìm kiếm dự phòng cho $ (VSToolsPath) - "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0". Các đường dẫn tìm kiếm này được xác định trong "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config". Xác nhận rằng đường dẫn trong khai báo là đúng và tệp tồn tại trên đĩa ở một trong các đường dẫn tìm kiếm.

Giải pháp cho lỗi này tôi tìm thấy ở đây .

Trong trường hợp của tôi, tệp .csproj chứa các dòng sau:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

Sau khi thay thế v14.0bằng v$(VisualStudioVersion)trong VSToolPaththẻ, dự án có thể được tải.

Tôi cũng đã thay thế v14.0bằng v10.0trong VisualStudioVersionthẻ, như giải pháp trong liên kết ở trên cho thấy. Nhưng đối với tôi, nó cũng hoạt động bằng cách để nó ở mức 14.0.

Cuối cùng thì những dòng này sẽ trông như thế nào:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Nếu bạn hoàn toàn không có những dòng này trong .csproj của mình, thì bạn phải thêm chúng theo cách thủ công TRƯỚC dòng này:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

Trong trường hợp của tôi (thông báo lỗi hơi khác nhưng cùng một vấn đề), đó là dòng này:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Có vẻ như các dự án được tạo bằng các phiên bản Visual Studio từ năm 2011 có chứa các dòng VSToolsPath định nghĩa lại, trong khi các tệp cũ hơn thì không. Visual Studio không bao giờ tự động thêm chúng khi nâng cấp lên phiên bản VS mới hơn, đó là lý do tại sao bạn nên thêm chúng nếu chúng không có ở đó.

Nguồn của thông tin này: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (nhấp vào Hiển thị nhiều nhận xét hơn để xem toàn bộ chuỗi thảo luận - rất tiếc là tôi không thể liên kết trực tiếp đến các nhận xét trong phần "thêm" này.)


11

Thật dễ dàng để cài đặt các công cụ xây dựng năm 2017, với WebBuildToolstùy chọn đã được bao gồm, bằng cách sử dụng sô cô la . Khi bạn đã cài đặt xong , hãy nhập nội dung sau vào dấu nhắc lệnh quản trị:

choco install visualstudio2017buildtools -y

Đối với VS 2019, nó tương tự:

choco install visualstudio2019buildtools -y

2
Bạn không cần phải cài đặt một phiên bản cụ thể, bạn có thể cài đặt nó theo cách này sử dụng Chocolatey và kết hợp các câu trả lời được chấp nhận:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

Sao chép WebApplicationsthư mục từ

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

đến

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

Hoặc trong tập lệnh xây dựng của bạn, hãy thêm dòng sau trước khi biên dịch

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

Đảm bảo chạy nó với các quyền cao hơn


3

làm thế nào để tạo ứng dụng VS 2017 pro, asp.net MVC và xây dựng nó với Jenkins?

sử dụng so với 2017 pro trong cả máy phát triển và máy chủ xây dựng

Kiểm tra xem VisualStudio có được đặt thành 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplication \ Microsoft.WebApplication.targets" Condition = "false"

đặt công cụ msbuild
thành C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe trong trình quản lý cấu hình toàn cầu jenkins

Với jenkins, hãy thực thi lệnh Windows batch:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" restore "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Với jenkins, thực hiện lô lệnh của windows:
MSBuild Build File: theapp.sln
Command Line Arguments: / nologo / t: restore / t: Build / p: Configuration = "Debug" /p:VisualStudioVersion=15.0


2

Đối với VS 2019, tôi đã sửa lỗi này bằng cách sao chép:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

đến

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio


Làm thế nào để có được C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 cho VS2019
somegeek

-1

Tôi chỉ cần sử dụng Visual Studio Installer để cập nhật Visual Studio Community 2017 , sau đó sự cố đã được giải quyết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.