ไม่พบ v11.0 \ WebApplications \ Microsoft.WebApplication.targets เมื่อไฟล์อ้างอิง v10 จริงๆ


84

ก่อนอื่นพื้นหลัง ในตอนท้ายของปี 2012 เราได้ย้ายโซลูชัน vs2008 ไปเป็น vs2010 แต่เรายังคงกำหนดเป้าหมายเป็น. NET 3.5 (ฉันไม่รู้อะไรเลยนอกจากล่าสุดและยิ่งใหญ่ที่สุดที่นี่!)

เราไม่มีปัญหาใด ๆ กับการตั้งค่านี้จนกระทั่งสองสามสัปดาห์ที่ผ่านมาเมื่อมีคนเริ่มรับข้อผิดพลาดเหล่านี้:

"foo.csproj" (Rebuild target) (16:5) ->
  C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

สิ่งที่น่าสนใจคือถ้าคุณดูไฟล์โปรเจ็กต์มันอ้างอิง v10 ซึ่งสมเหตุสมผลเพราะเราไม่ได้ใช้ Visual Studio 2012

ข้อผิดพลาดนี้ส่งผลกระทบต่อเราหลายคนพร้อมกันและแม้แต่ในสาขารหัสรุ่นเก่าที่ไม่มีการเปลี่ยนแปลงในเดือน

ฉันสงสัยว่าการอัปเดตบางอย่างถูกผลักไปยังเครื่องของเราซึ่งทำให้เกิดความสับสน แต่ฉันไม่รู้จะทำอย่างไร

วิธีแก้ปัญหาระยะสั้นคือการติดตั้ง VS 2012 และไม่ได้ใช้ แต่ฉันหวังว่าจะมีอะไรที่สะอาดกว่านั้นเล็กน้อย


17
ฉันพบว่าการเพิ่ม "/p:VisualStudioVersion=10.0" ในบรรทัดคำสั่ง MSBuild ทำให้สิ่งนี้หายไป แต่ก็ยังรู้สึกเหมือนแฮ็ค
drs9222

คำตอบ:


116

ฉันพบปัญหาเดียวกันกับ Visual Studio 2013 ปรากฎว่าฉันใช้ MSBuild เวอร์ชันเก่าซึ่งเป็นเวอร์ชันที่มาพร้อมกับ. NET Framework - จากบรรทัดคำสั่ง Microsoft กำลังปล่อย MSBuild โดยเป็นส่วนหนึ่งของ Visual Studio และเป็นตัวติดตั้งแยกต่างหาก ( http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of- visual-studio.aspx )

วิธีแก้ปัญหาคือใช้ MSBuild.exe เวอร์ชันใหม่ที่อยู่ในC:\Program Files (x86)\MSBuild\12.0\Bin. เมื่อฉันทำเช่นนั้นข้อผิดพลาดของเป้าหมายทั้งหมดก็หายไป

แก้ไข 1

ตามที่กล่าวไว้ในความคิดเห็น MSBuild เวอร์ชันใหม่แต่ละรายการจะมีไดเร็กทอรีใหม่ สำหรับ Visual Studio 2015 C:\Program Files (x86)\MSBuild\14.0\Binการใช้งาน

แก้ไข 2

ตามที่ระบุไว้ในความคิดเห็นสำหรับ Visual Studio 2017, C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exeการใช้งาน


1
ฉันโพสต์คำขอในฟอรัม TeamCity เพื่อรวมเส้นทางใหม่ (ดูวิธีจัดการการตั้งค่า NuGet) หวังว่าพวกเขาจะจัดการเรื่องนี้ได้อย่างรวดเร็ว
David Peden

1
ลิงก์โดยตรงในบล็อกโพสต์ไปยังการดาวน์โหลดเครื่องมือแยกใช้ไม่ได้อีกต่อไป การเชื่อมโยงที่ถูกต้องคือ: microsoft.com/en-us/download/details.aspx?id=40760
David Peden

1
และเช่นเดียวกับที่ Jetbrains มาพร้อมกับเวอร์ชัน 8.0.5 บล็อกโพสต์อย่างเป็นทางการ: teamcitydev.blogspot.com/2013/11/…
David Peden

1
หากคุณมีสคริปต์สร้าง Powershell ในเครื่องคุณสามารถเพิ่มไปยังเส้นทางของคุณ: $env:Path = $env:Path + ";C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications"และใช้ v4 msbuild (คุณสามารถทำได้ในกล่องสร้างของคุณด้วย)
Chris S

4
ใช่ ขอบคุณ - นี่คือทางออกที่เหมาะสม
Josh M.

53

หากคุณมีบิลด์เซิร์ฟเวอร์ที่ไม่ได้ติดตั้ง VS2012 คุณสามารถแก้ไขได้โดย

ก) การติดตั้งแพ็คเกจMSBuild.Microsoft.VisualStudio.Web.targetsลงในโซลูชันของคุณและ

b) แทนที่บรรทัดนี้ในไฟล์. csproj:

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

ด้วยบรรทัดนี้ชี้ไปที่แพ็กเกจนักเก็ต

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />

แก้ไข

เนื่องจาก @joedragons ชี้ให้เห็นว่าเวอร์ชันในบรรทัดที่อัปเดตควรตรงกับเวอร์ชันแพ็กเกจ nuget กล่าวคือแทนที่targets.11.0.2.1ด้วยtargets.x.x.x.xเวอร์ชันปัจจุบัน


1
ในทำนองเดียวกันคำแนะนำที่ดี!
Kevin Obee

2
ขอบคุณทางออกที่ดี
Pavel

1
อาจจะชัดเจน แต่บรรทัดที่คุณแทนที่ควรมีเวอร์ชันของแพ็คเกจที่คุณติดตั้ง สิ่งที่ฉันติดตั้งคือ 12.0.4 ดังนั้นเมื่อฉันใส่การนำเข้าทดแทนฉันก็ได้รับข้อผิดพลาดเดียวกัน เมื่อฉันเปลี่ยนมาใช้ ... Web.targets.12.0.4 \ ... all good =) ขอบคุณมาก!
joedragons

2
คุณไม่ต้องการส่วน b ของคำตอบนี้อีกต่อไป ด้วยเหตุผลบางประการ SO ได้ปฏิเสธการแก้ไขของฉันเพื่อลบรายละเอียดที่ไม่จำเป็นออก
bbodenmiller

1
ขอบคุณฉันทำเช่นเดียวกันกับ MSBuild.Microsoft.VisualStudio.Web.targets เวอร์ชันล่าสุด 14.0.0.3
Ahmed Samir

23

วิธีง่ายๆสำหรับปัญหานี้:

ไปที่เส้นทางต่อไปนี้:

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

คุณจะเห็นเวอร์ชันล่าสุด V10.0, v11.0, v12.0 ขึ้นอยู่กับการติดตั้ง Visual Studio 2010, 2012 หรือ 2013 ของคุณ

คัดลอกWebApplicationsโฟลเดอร์จากไดเร็กทอรีเวอร์ชันล่าสุดและวางลงในโฟลเดอร์อื่น

ปัญหาของคุณควรได้รับการแก้ไข


1
IMO นี้เป็นทางออกที่ง่ายและดีที่สุด :)
gideon

แน่นอนว่าคุณต้องมีสิทธิ์เข้าถึงเพื่อทำสิ่งนี้บนบิลด์เซิร์ฟเวอร์
Dave

1
... แต่ทำไมเราต้องทำด้วยตนเอง? ขอบคุณ .. สิ่งนี้แก้ไขให้ฉันใน VS21017 (สำหรับฉันมันเป็นการติดตั้งใหม่กับ VS2017 เท่านั้น - ตอนนี้ฉันคิดว่าเป็นเพราะฉันยังไม่ได้ติดตั้ง IIS)
Piotr Kula

ใช้งานได้เมื่อคัดลอกไปยัง V14.0
Uwe Keim


8

ว้าว. เราเพิ่งเห็นสิ่งเดียวกันนี้เกิดขึ้นบนเครื่องสร้างของเรา เราใช้ VS2010 และกำหนดเป้าหมาย. NET 4.0 ไฟล์โครงการของเราอิมพอร์ตเวอร์ชัน v10.0 ของเป้าหมายเหล่านี้อย่างชัดเจน เมื่อไม่มีการเปลี่ยนแปลงโค้ดเมื่อวานนี้การสร้างก็ใช้ได้และวันนี้ล้มเหลวด้วยการร้องเรียนเกี่ยวกับเวอร์ชัน v11.0 ที่หายไป .NET Framework 4.5.1 ได้รับการติดตั้ง / อัปเดตเมื่อคืนที่ผ่านมาบนเครื่องรุ่นนี้เป็นการอัปเดตอัตโนมัติ เราจะบังคับ v10.0 ด้วยพารามิเตอร์ (หรือตัวแปร env.) แต่สิ่งนี้ทำให้เราประหลาดใจอย่างแน่นอน ...

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

Format Version 12.00

เราทดสอบด้วยตนเองโดยเปลี่ยนสิ่งนี้เป็น 11.00 น. และบิวด์เริ่มทำงานอีกครั้ง

ในกรณีของเราแม้ว่าเราจะกำหนดเป้าหมายและสร้างทุกอย่างสำหรับปี 2010 / 4.0 แต่นักพัฒนาบางคนก็เตรียมพร้อมสำหรับ VS2012 แล้ว (เนื่องจาก MS อ้างว่าไฟล์โปรเจ็กต์เข้ากันได้) และโซลูชันเฉพาะนี้ได้รับการบันทึกล่าสุด (เดือนที่แล้ว) ใน VS2012. ก่อนวันนี้ไม่ได้ก่อให้เกิดปัญหา


1
สิ่งนี้ช่วยฉันได้มากกว่าคำตอบที่ได้รับการโหวตสูงสุดซึ่งดูเหมือนจะเป็นสถานการณ์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง
LambdaCruiser

เหมือนกันที่นี่ @LambdaCruiser คำตอบนี้ช่วยได้มาก ฉันดูประวัติของไฟล์. sln ของฉันและบรรทัดที่ 2 อ่านบรรทัด# Visual Studio 2010แรกจบลงด้วยFormat Version 12.00ในบางขั้นตอนฉันได้อัปเกรดเป็น vs2012 แต่สลับไปมาเป็น vs2010 เช่นเดียวกับเวย์นปัญหานี้เกิดขึ้นหลังจากที่รัน Windows Update บนเซิร์ฟเวอร์ CI
วอล

6

ฉันมีปัญหาเดียวกัน แก้ไขโดยทำตามวิธีแก้ปัญหาข้างต้น ปัญหานี้เกิดขึ้นเนื่องจาก Visual Studio Tools (BuildTools) เวอร์ชันที่เหมาะสมไม่มีอยู่บนเซิร์ฟเวอร์ Build ดังที่ได้กล่าวไปแล้วข้างต้นสิ่งนี้สามารถแก้ไขได้โดยการติดตั้ง BuildTools แต่ไม่ใช่ตัวเลือกในกรณีของฉัน

นี่เป็นทางเลือกอื่น - ใช้ Nuget

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3

ระบุโครงการเริ่มต้นและติดตั้ง web.targets ตามเวอร์ชันของ Visual studio ที่ใช้ ไฟล์ต่อไปนี้จะถูกแก้ไขซึ่งรวมถึงการเปลี่ยนแปลงที่จำเป็น

ใน package.config:

<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />

ใน. csproj:

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />

หวังว่านี่จะช่วยได้ !!! โชคดี,

ไชโย


1
คำตอบที่สมบูรณ์แบบ - ไม่จำเป็นต้องใช้ไฟล์ csproj หรือคัดลอกสิ่งต่างๆรอบตัวบนบิลด์เซิร์ฟเวอร์ ทำงานกับ Visual Studio และ MSBuild 2017 หลายเวอร์ชันฉันได้ลบบรรทัด "WebApplication.targets" ด้วยตนเอง - nuget ไม่ได้ลบออกโดยอัตโนมัติ
Gedas Kutka

3

แฮ็ค แต่แก้ไขได้โดยการคัดลอก: c: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications *. * ถึง c: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web แอปพลิเคชัน *. *


1

ฉันได้รับข้อผิดพลาดนี้ในช่วงปลายเดือนพฤศจิกายนโดยไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับการกำหนดค่าการติดตั้ง TeamCity ของฉันหรือการติดตั้ง MSBuild หรือซอร์สโค้ด บนเซิร์ฟเวอร์สร้าง Visual Studio ของฉันยังไม่ได้ติดตั้งและการเปลี่ยนแปลงจาก VS2010 เป็น VS2012 เกิดขึ้นในปลายเดือนสิงหาคมโดยไม่มีปัญหาใด ๆ ในเวลานั้น

เวอร์ชัน MSBuild ของฉันคือ 4.0.30319.18408 เซิร์ฟเวอร์การสร้างของฉันคือ Windows Server 2008 R2 SP1 พร้อม TeamCity v6.5.3

ฉันแก้ไขปัญหาที่ออกโดยเพียงแค่คัดลอกโฟลเดอร์ v11 จากเซิร์ฟเวอร์สร้างอื่นซึ่งไม่ได้รับผลกระทบ

ฉันเดาว่าสิ่งนี้อาจเกิดขึ้นได้สองวิธี:

  1. มีการอัปเดตบางอย่างซึ่งทำให้เกิดการลบโฟลเดอร์ v11 อาจเป็น Windows Update เป็น. NET หรืออะไร?

  2. มีการอัปเดตบางอย่างซึ่งเปลี่ยนการกำหนดค่า TeamCity / MSBuild ของฉันจากการใช้ v10 เป็น v11 และบิวด์หยุดทำงานเนื่องจาก v11 ไม่เคยมีอยู่

ฉันได้รับการอัปเดตเป็น. NET Framework 4.5.1 ในวันที่ 3 ธันวาคมนั่นอาจเป็นสาเหตุได้หรือไม่

Brgds

โจนาส


0

ฉันเพิ่งติดปัญหาเดียวกัน และข้อสรุปของฉันคือทุกเวอร์ชันของ VS (v10, v11, v12) จะเปลี่ยนเส้นทางของตัวแปรบิวด์เช่นMSBuildBinPath.

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

ในบางกรณีที่เกิดขึ้นได้ยากคุณอาจต้องติดตั้งแพ็คเกจ VS และ Web Deploy เวอร์ชันเฉพาะ ในกรณีของฉันแค่รุ่นก็เพียงพอแล้วที่จะแก้ปัญหา


0

คุณสามารถเพิ่มคุณสมบัติ VisualStudioVersion ดังนี้:

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>

0

ขณะที่ฉันกำลังค้นหาวิธีแก้ปัญหานี้เกือบทุกคนแนะนำให้คัดลอกโฟลเดอร์ MSBUILD ที่หายไปหรือติดตั้ง SDK บางเวอร์ชัน

โชคดีที่ฉันได้พบโพสต์ที่เป็นประโยชน์อย่างยิ่งนี้โดย Donovan Brown: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors!

โดยสรุปแนวคิดคือการกำหนดค่าเวอร์ชัน VisualStudio ที่คุณควรใช้ใน Build Definition ของคุณ:

คลิกขวา -> "แก้ไขคำจำกัดความของโครงสร้าง ... "

ไปที่ "Procss" -> "3. ขั้นสูง"

และตั้งค่า "MSBuild Arguments" ด้วย

/p:VisualStudioVersion=12.0

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