เนมสเปซ XML เริ่มต้นของโครงการจะต้องเป็นเนมสเปซ MSBuild XML


150

ฉันโคลนASP.NET Core SignalR Repo แบบโลคัลและลองเปิดโซลูชันจากภายในสภาพแวดล้อมต่อไปนี้

IDE

Microsoft Visual Studio Enterprise 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.6.01055

DOT NET CLI

λ dotnet --info
.NET Command Line Tools (1.0.0-preview2-1-003177)

Product Information:
 Version:            1.0.0-preview2-1-003177
 Commit SHA-1 hash:  a2df9c2576

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.1.7601
 OS Platform: Windows
 RID:         win7-x64

ฉันเห็นข้อความแสดงข้อผิดพลาดประเภทนี้จำนวนมาก:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : ข้อผิดพลาด: เนมสเปซ XML เริ่มต้นของโครงการต้องเป็นเนมสเปซ MSBuild XML หากโครงการถูกเขียนในรูปแบบ MSBuild 2003 โปรดเพิ่ม xmlns="http://schemas.microsoft.com/developer/msbuild/2003"องค์ประกอบ หากโครงการได้รับการเขียนในรูปแบบเก่า 1.0 หรือ 1.2 โปรดแปลงเป็นรูปแบบ MSBuild 2003 ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

ฉันต้องการทราบวิธีแก้ไขปัญหานี้ในวิธีที่ถูกต้อง


ฉันเพิ่งสันนิษฐานว่าฉันจะสามารถเป็นไปได้ว่าเป็นข้อสันนิษฐานที่ฉันไม่ควรทำ ฉันหวังว่าจะเข้ากันได้ย้อนหลัง
David Pine

1
ฉันได้รับข้อผิดพลาดนี้หลังจากให้ VS2017 RTM อัปเดตรูปแบบโครงการ :-(
Simon_Weaver

ฉันโพสต์ข้อผิดพลาดที่คล้ายกันที่นี่ .. stackoverflow.com/questions/58336983/ … อย่างไรก็ตามในกรณีของฉันฉันเริ่มต้นด้วย proj ใหม่ไม่พยายามเปิดอันที่มีอยู่
joedotnot

คำตอบ:


212

โครงการที่คุณพยายามเปิดอยู่ในรูปแบบ. NET Core csproj ใหม่ หมายความว่าคุณต้องใช้ Visual Studio 2017 ซึ่งรองรับรูปแบบใหม่นี้

นิด ๆ หน่อย ๆ ของประวัติศาสตร์แรก .NET หลักที่ใช้แทนproject.json *.csprojอย่างไรก็ตามหลังจากมีการพิจารณาอย่างถี่ถ้วนใน Microsoft พวกเขาตัดสินใจกลับไปcsprojใช้รูปแบบที่สะอาดและอัปเดต อย่างไรก็ตามรูปแบบใหม่นี้รองรับเฉพาะใน VS2017

หากคุณต้องการที่จะเปิดโครงการ แต่ไม่ต้องการที่จะรอจนกว่ามีนาคม 7 วันสำหรับการเปิดอย่างเป็นทางการ VS2017 คุณสามารถใช้ Visual Studio รหัสแทน


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

ไม่ใช่กับ VS2015 ไม่ใช่ นั่นเป็นเหตุผลที่ฉันเสนอ VS Code เป็นทางเลือก อย่างน้อยคุณมีเวลาเพียงหนึ่งสัปดาห์เท่านั้นที่จะต้องรอ VS2017 ออกวางจำหน่าย :)
DavidG

นั่นเป็นเรื่องจริงขอบคุณ! สิ่งที่รุ่นของDot Net CLIฉันไม่ต้องการหากฉันจะใช้รหัส VS ?
David Pine

2
@ThePartyTurtle เพื่อความเป็นธรรมนั่นจะขอให้ VS2015 เข้าใจรูปแบบไฟล์ที่ไม่เคยให้การสนับสนุน
DavidG

44

ฉันพบปัญหานี้ขณะเปิด Service Fabric GettingStartedApplicationใน Visual Studio 2015 โซลูชันดั้งเดิมสร้างขึ้นบน. NET Core ใน VS 2017 และฉันได้รับข้อผิดพลาดเดียวกันเมื่อเปิดในปี 2558

นี่คือขั้นตอนที่ฉันทำตามเพื่อแก้ไขปัญหา

  • คลิกขวาที่โครงการ (โหลดล้มเหลว) และแก้ไขใน visual studio
  • เห็นบรรทัดต่อไปนี้ในแท็กโครงการ: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • ปฏิบัติตามคำแนะนำที่แสดงในข้อความข้อผิดพลาดเพื่อเพิ่มxmlns="http://schemas.microsoft.com/developer/msbuild/2003"ไปยังแท็กนี้

ตอนนี้ควรมีลักษณะดังนี้:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • การโหลดโครงการอีกครั้งทำให้ฉันมีข้อผิดพลาดถัดไป (คุณอาจแตกต่างกันไปตามสิ่งที่รวมอยู่ในโครงการของคุณ)

องค์ประกอบ "อัพเดท" ไม่ได้รับการยอมรับ

  • เห็นว่าไม่มีองค์ประกอบใดมีคุณลักษณะการอัปเดตดังนี้:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • ให้ความเห็นว่าออกมาดังนี้

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • ข้อผิดพลาดถัดไป: เวอร์ชันในการอ้างอิงแพ็คเกจไม่รู้จัก เวอร์ชันในองค์ประกอบ <PackageReference> ไม่รู้จัก

  • เห็นว่ารุ่นนั้นมีใน csproj xml ดังนี้ (ลบ PackageReference เพิ่มเติมเพื่อความกระชับ)

  • ปล้นแอตทริบิวต์ Version

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • ฉันได้รับต่อไปนี้: VS อัปเกรดอัตโนมัติ

บิงโก! Visual Studio การอัพเกรดทางเดียวเริ่มต้นขึ้นแล้ว! ให้ VS ทำเวทย์มนตร์!

  • โหลดโครงการแล้ว แต่มีข้อผิดพลาดอ้างอิง lib ป้อนคำอธิบายรูปภาพที่นี่

  • แก้ไขข้อผิดพลาด lib อ้างอิงเป็นรายบุคคลโดยการลบและแทนที่ใน NuGet เพื่อให้โครงการทำงานได้!

หวังว่านี่จะช่วยให้นักเดินทางรหัสอื่น :-D


3
@DavidG ไม่ต้องเสียเวลาเพราะทุกโครงการมีสาขา VS2015
usr-bin-

ต้องเพิ่มว่าคุณต้องคลิก "แสดงไฟล์ทั้งหมด" ในแถบเครื่องมือโซลูชัน Explorer เพื่อดูโฟลเดอร์ของโครงการอีกครั้ง พวกเขาจะปรากฏ "ประ" และคุณจะต้องคลิกขวาและเลือกแต่ละคนและเลือก "รวมในโครงการ" เพื่อจัดระเบียบพวกเขาอีกครั้ง
vapcguy

เหล่านี้เป็นปัญหาที่ฉันเผชิญ .. ทีละขั้นตอนติดตามพวกเขา .. ขอบคุณ !!
Samra

14

@ คำตอบของ DavidG นั้นถูกต้อง แต่ฉันต้องการเพิ่มว่าหากคุณกำลังสร้างจากบรรทัดคำสั่งทางออกที่เทียบเท่าคือเพื่อให้แน่ใจว่าคุณกำลังใช้เวอร์ชันที่เหมาะสมของ msbuild (ในกรณีนี้ต้องเป็นรุ่น 15)

วิ่ง msbuild /?เพื่อดูเวอร์ชันที่คุณใช้หรือwhere msbuildเพื่อตรวจสอบว่าสภาพแวดล้อมใดที่สามารถเรียกใช้งานได้และปรับปรุง (หรือชี้ไปที่ตำแหน่งที่ถูกต้อง) เครื่องมือหากจำเป็น

ดาวน์โหลดเครื่องมือล่าสุด MSBuild จากที่นี่


6

หากได้รับข้อผิดพลาดนี้พยายามที่จะสร้างแอป. Net Core 2.0 บน VSTS โปรดตรวจสอบให้แน่ใจว่าคำจำกัดความการสร้างของคุณใช้Hosted VS2017คิวตัวแทน


ฉันมีปัญหาที่คล้ายกันกับโครงการ VS Azure Function ที่กำหนดเป้าหมายเป็น. net framework แต่ยังคงสร้างไฟล์ csproj ในรูปแบบ core การแก้ไขนี้ใช้งานได้สำหรับฉัน
ElliotSchmelliot

3

ฉันได้รับข้อความเดียวกันในขณะที่ฉันกำลังเรียกใช้ msbuild จาก PowerShell

dotnet msbuild "./project.csproj" ทำงานให้ฉัน


นี้นั้นเป็นคำตอบเดียวกับคนนี้ คุณต้องใช้ msbuild เวอร์ชันล่าสุด
DavidG

0

ถ้าโครงการไม่ใหญ่

1- เปลี่ยนชื่อของโครงการโฟลเดอร์

2- สร้างโครงการใหม่ด้วยโครงการเดียวกัน (ก่อนเปลี่ยนชื่อ)

3- เพิ่มไฟล์ที่มีอยู่จากโครงการเก่าไปยังโครงการใหม่ (เหมือนกันโดยสิ้นเชิงโฟลเดอร์เดียวกันชื่อเดียวกัน ... )

4- เปิดไฟล์โครงการใหม่ (เป็น xml) และโครงการเก่า

5- คัดลอกไฟล์โครงการใหม่ (เนื้อหา xml) และวางในไฟล์โครงการเก่า

6- ลบโครงการเก่า

7- เปลี่ยนชื่อโครงการโฟลเดอร์เก่าเป็นชื่อเดิม

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