MS-Build 2017“ Microsoft.WebApplication.targets” หายไป


86

ฉันกำลังพยายามอัพเกรด buildserver (jenkins) ของเราจาก Visual Studio 2015 เป็น 2017 เรากำลังสร้างผ่าน MS-Build ฉันได้ดาวน์โหลดและติดตั้งเครื่องมือ MS-Buld ตามที่อธิบายไว้ในคำตอบนี้ หากฉันรวบรวมโครงการของฉันฉันได้รับข้อผิดพลาดที่Microsoft.WebApplication.targetsไม่พบ

ข้อผิดพลาดโดยละเอียด:

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

ฉันทำการค้นหาในไดเร็กทอรี 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

ดังที่เห็นได้ว่ามีไฟล์สำหรับคอมไพเลอร์เวอร์ชันเก่า แต่สำหรับ v15.0 นั้นหายไป

ฉันยังได้ติดตั้ง Visual Studio 2017 บนบิลด์เซิร์ฟเวอร์ โครงการจะสร้างได้สำเร็จถ้าฉันคอมไพล์ด้วย Visual Studio 2017

มีคำแนะนำวิธีแก้ปัญหานี้หรือไม่? ทางออกหนึ่งที่เป็นไปได้คือการสร้างลิงก์สัญลักษณ์จากC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsจุดไปยังไฟล์ v14.0 เก่า (อยู่ด้านล่างC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications)

ขอบคุณ



1
ฉันมีปัญหานี้กับโปรเจ็กต์ที่ใช้ VS 2019 ฉันแก้ไขได้อย่างไรโดยเปิดไฟล์ csproj ระบุบรรทัด <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> และแทนที่ด้วย <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

คำตอบ:


130

ดูเหมือนว่าคุณจะหายไปภาระงานสำหรับ Microsoft.VisualStudio.Workload.WebBuildTools"การพัฒนาเว็บสร้างเครื่องมือ":

คุณสามารถติดตั้งได้โดยดาวน์โหลดตัวติดตั้งเครื่องมือสร้างจากที่นี่ (VS2017) หรือที่นี่ (VS2019) จากนั้นเรียกใช้

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

หรือเปิดvs_buildtools.exeและเลือกคอมโพเนนต์ "เครื่องมือสร้างการพัฒนาเว็บ" ใน GUI:

ภาพหน้าจอจาก GUI


3
ฉันจะรันคำสั่งนี้ได้อย่างไรซึ่งการให้ 'vs_buildtools.exe' ไม่ได้รับการยอมรับว่าเป็นข้อผิดพลาดของคำสั่งภายในหรือภายนอกในเครื่องมือสำหรับนักพัฒนา 2017
Developerzzz

26
หากคุณดาวน์โหลดโปรแกรมติดตั้ง "Build Tools for Visual Studio 2017" แล้ว ( visualstudio.com/thank-you-downloading-visual-studio/… ) คุณสามารถเปิดตัวติดตั้งดังกล่าวกด Modify และทำเครื่องหมายที่ "Web development build jobs "ช่องทำเครื่องหมายโมดูลภาระงาน จากนั้นคลิกปุ่ม Modify และปล่อยให้โปรแกรมติดตั้งเสร็จสิ้น
Spiralis

ใช่คุณต้องใช้บรรทัดคำสั่งด้านบนเพื่อติดตั้ง คุณไม่พบมันใน GUI
sky91

4
ผมติดตั้งBuild Tools for Visual Studio 2017กับWeb development build tasksจากการเชื่อมโยงที่มีให้ แต่ก็ยังไม่ได้สร้างC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsfolder..i ยังไม่ได้เห็นvs_buildtools.exe..i สืบค้นทั้ง `C:`
LP13

1
ขอบคุณ.. ดูเหมือนจาก VS 2017 ค่าของ$(MSBuildExtensionsPath)ถูกเปลี่ยนเป็นC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/… that
LP13

89

คำตอบที่ได้รับการยอมรับข้างต้นนั้นถูกต้องในทางเทคนิคเพียงแค่ไม่สมบูรณ์สับสนเล็กน้อยสำหรับฉันอย่างน้อยก็สำหรับฉันและต้องการขั้นตอนพิเศษอีกขั้นเพื่อให้ Visual Build Professional ทำงานได้

  1. vs_buildtools.exe ไม่มีในทางเทคนิค ฉันต้องสร้างคำถามเพื่อถามว่าไฟล์นั้นอยู่ที่ไหน ไม่ชัดเจนว่า vs_buildtools.exe คือ vs_buildtools _ *******. exe และเป็นโปรแกรมติดตั้งจริง นอกจากนี้ "-add ***" ที่กล่าวถึงข้างต้นเป็นเพียงชวเลข หนึ่งสามารถไปที่ GUI และตรวจสอบงานเวิร์กโฟลว์ทั้งสอง ที่ทำในสิ่งเดียวกัน ฉันมีไฟล์ vs_buildtools แม้ว่าจะไม่ต้องการก็ตาม

  2. VSB Pro ยังไม่ได้สร้างโครงการของฉัน ฉันได้รับข้อผิดพลาดเดียวกันข้างต้น ซอสลับเป็นเพียงเพื่อคัดลอกWebApplicationsโฟลเดอร์ในการC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0จากนั้นฉันก็สร้างโครงการขึ้นมาใหม่และทุกอย่างเรียบร้อยดี ฉันวางไฟล์ WebApplication.targets ไว้ที่ตำแหน่งที่คาดไว้

ทำไมไมโครซอฟท์ไม่สามารถทำได้นอกเหนือจากฉัน นอกจากนี้ทำไมต้องติดตั้งแยกต่างหาก VS17 ติดตั้งสิ่งของจำนวนมหาศาล Build Tools เป็นนัยเช่นเคย ก็ตาม.

ฉันโพสต์คำตอบนี้โดยหวังว่าจะช่วยผู้อื่นได้ ฉันตกหลุมพรางและเสียเวลาไปพอสมควรโดยที่โครงการของฉันไม่ได้สร้าง ฉันหวังว่าคำตอบนี้จะให้ความกระจ่างแก่สิ่งต่างๆเล็กน้อย


4
ยืนยันว่า "Build Tools for Visual Studio 2017" คัดลอกเป้าหมายไปยัง C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 จริงๆในขณะที่ msbuild พยายามค้นหาเป้าหมายที่ C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 ดังนั้นฉันต้องคัดลอกโฟลเดอร์ เห็นได้ชัดว่า IDE ใช้ตัวแรกและอันที่ 2 ใช้โดย msbuild แบบสแตนด์อะโลน แปลก.
ZZZ

1
คุณไม่ควรคัดลอกอะไรด้วยตนเอง vs_buildtools.exe เป็นเพียง Visual Studio Installer ช่วยให้คุณติดตั้ง Build Tools หรือ Visual Studio สำหรับทั้งสองอย่างคุณสามารถติดตั้งเวิร์กโหลดและส่วนประกอบต่างๆได้ หากคุณต้องการติดตั้งเวิร์กโหลดสำหรับ Visual Studio คุณต้องคลิกปุ่ม "แก้ไข" ด้วยวิธีนี้คุณสามารถติดตั้งส่วนประกอบที่จำเป็นได้
Vladimir Serykh

2
แน่นอน แต่ปัญหาคือตัวติดตั้ง Visual Studio ดูเหมือนจะไม่น่าเชื่อถือในการวางโฟลเดอร์ WebApplications ในทั้งสองตำแหน่งที่ต้องการ การคัดลอกด้วยตนเองตามที่ Sarah แนะนำเป็นวิธีเดียวที่ฉันจัดการเพื่อให้งานสร้างทำงานบนเครื่อง dev ของฉันได้อย่างน่าเชื่อถือ
บาร์ตอ่าน

21

ฉันมีปัญหาที่คล้ายกันหลังจากอัปเกรดจาก Visual Studio 2015 เป็น 2017 เมื่อฉันพยายามโหลดโครงการเว็บแอปพลิเคชันมันทำให้ฉันมีข้อความแสดงข้อผิดพลาด:

ไม่พบโครงการที่นำเข้า "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets นอกจากนี้ให้พยายามค้นหา "WebApplications \ Microsoft.WebApplication.targets" ในเส้นทางการค้นหาทางเลือกสำหรับ $ (VSToolsPath) - "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0" เส้นทางการค้นหาเหล่านี้กำหนดไว้ใน "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config" ตรวจสอบว่าเส้นทางในการประกาศถูกต้องและมีไฟล์อยู่ในดิสก์ในเส้นทางการค้นหาใดเส้นทางหนึ่ง

วิธีการแก้ปัญหาข้อผิดพลาดนี้ผมพบว่าที่นี่

ในกรณีของฉันไฟล์. csproj มีบรรทัดต่อไปนี้:

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

หลังจากแทนที่v14.0ด้วยv$(VisualStudioVersion)ในVSToolPathแท็กแล้วโครงการสามารถโหลดได้

ฉันยังแทนที่v14.0ด้วยv10.0ในVisualStudioVersionแท็กตามที่โซลูชันในลิงค์ด้านบนแสดง แต่สำหรับฉันมันก็ใช้ได้เช่นกันโดยทิ้งไว้ที่ 14.0

บรรทัดต่อไปนี้ควรมีลักษณะอย่างไรในตอนท้าย:

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

หากคุณไม่มีบรรทัดเหล่านี้เลยใน. csproj ของคุณคุณต้องเพิ่มด้วยตนเองก่อนบรรทัดนี้:

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

ในกรณีของฉัน (ข้อความแสดงข้อผิดพลาดแตกต่างกันเล็กน้อย แต่มีปัญหาเดียวกัน) มันเป็นบรรทัดนี้:

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

ดูเหมือนว่าโครงการที่สร้างด้วย Visual Studio เวอร์ชันตั้งแต่ปี 2011 จะมีบรรทัดที่มีการVSToolsPathกำหนดค่าใหม่ในขณะที่ไฟล์รุ่นเก่าไม่มี Visual Studio ไม่เคยเพิ่มโดยอัตโนมัติเมื่ออัปเกรดเป็น VS เวอร์ชันที่ใหม่กว่าซึ่งเป็นเหตุผลที่คุณควรเพิ่มหากไม่มี

ที่มาของข้อมูลนี้: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (คลิกที่แสดง ความคิดเห็นเพิ่มเติมเพื่อดูชุดข้อความสนทนาทั้งหมด - ขออภัยที่ฉันไม่สามารถเชื่อมโยงโดยตรงกับความคิดเห็นในส่วน "เพิ่มเติม" นี้)


11

มันเป็นเรื่องง่ายที่จะติดตั้ง 2017 สร้างเครื่องมือที่มีWebBuildToolsตัวเลือกรวมแล้วใช้chocolatey เมื่อคุณติดตั้งแล้วให้พิมพ์คำสั่งต่อไปนี้ในพรอมต์คำสั่งของผู้ดูแลระบบ:

choco install visualstudio2017buildtools -y

สำหรับ VS 2019 จะคล้ายกัน:

choco install visualstudio2019buildtools -y

2
คุณไม่จำเป็นต้องติดตั้งเวอร์ชันเฉพาะคุณสามารถติดตั้งได้ด้วยวิธีนี้โดยใช้ Chocolatey และรวมคำตอบที่ยอมรับ:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

คัดลอกWebApplicationsโฟลเดอร์จาก

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

ถึง

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

หรือใน build script ของคุณให้เพิ่มบรรทัดต่อไปนี้ก่อนคอมไพล์

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

อย่าลืมเรียกใช้ด้วยสิทธิ์ที่สูงขึ้น


3

วิธีสร้าง VS 2017 pro แอปพลิเคชั่น asp.net MVC และสร้างด้วย Jenkins

ใช้เทียบกับ 2017 pro ทั้งในเครื่อง dev และบิลด์เซิร์ฟเวอร์

ตรวจสอบว่า VisualStudio ถูกตั้งค่าเป็น 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false"

ตั้งค่าเครื่องมือ msbuild
เป็น C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe ใน jenkins global configuration manager

ด้วย jenkins ให้เรียกใช้ชุดคำสั่ง windows:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" restore "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp sln "

ด้วย jenkins รันชุดคำสั่ง windows:
MSBuild Build File: theapp.sln
Command Line Arguments: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0


3

สำหรับ VS 2019 ฉันแก้ไขสิ่งนี้โดยการคัดลอก:

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

ถึง

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


วิธีรับ C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 สำหรับ VS2019
somegeek

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.