Namespace XML default dari proyek harus namespace MSBuild XML

150

Saya mengkloning ASP.NET Core SignalR Repo secara lokal, dan mencoba membuka solusi dari dalam lingkungan berikut.

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

Saya akhirnya melihat banyak jenis pesan kesalahan ini:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: Namespace XML default dari proyek harus MSpace XML namespace. Jika proyek ini ditulis dalam format MSBuild 2003, silakan tambahkan xmlns="http://schemas.microsoft.com/developer/msbuild/2003"ke elemen. Jika proyek telah ditulis dalam format 1.0 atau 1.2 yang lama, harap ubah ke format MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Saya ingin tahu bagaimana cara memperbaikinya dengan cara yang benar.

David Pine
sumber
Saya hanya berasumsi bahwa saya akan mampu, apakah asumsi yang seharusnya tidak saya buat? Saya berharap ini kompatibel ke belakang.
David Pine
1
Yah saya mendapatkan kesalahan ini setelah mengizinkan VS2017 RTM untuk memperbarui format proyek :-(
Simon_Weaver
saya memposting kesalahan serupa di sini .. stackoverflow.com/questions/58336983/ ... , namun dalam kasus saya saya mulai dengan proj baru, tidak mencoba untuk membuka yang sudah ada.
joedotnot

Jawaban:

212

Proyek yang Anda coba buka ada dalam format .NET Core csproj yang baru. Ini berarti Anda harus menggunakan Visual Studio 2017 yang mendukung format baru ini.

Untuk sedikit sejarah, awalnya .NET Core digunakan project.jsonsebagai ganti *.csproj. Namun, setelah beberapa pertimbangan internal yang cukup besar di Microsoft, mereka memutuskan untuk kembali csprojtetapi dengan format yang jauh lebih bersih dan diperbarui. Namun, format baru ini hanya didukung di VS2017.

Jika Anda ingin membuka proyek tetapi tidak ingin menunggu hingga 7 Maret th untuk rilis VS2017 resmi, Anda bisa menggunakan Visual Studio Kode gantinya.

DavidG
sumber
Saya sangat akrab dengan sejarah, saya kira saya hanya berasumsi bahwa ini akan berhasil. Kesalahannya sepertinya tidak terlalu jauh dari kemungkinan. Apakah Anda yakin tidak ada cara untuk menjalankannya dengan upaya minimal untuk saat ini, tanpa bit Visual Studio 2017 RC ?
David Pine
Tidak dengan VS2015, tidak. Itu sebabnya saya menawarkan VS Code sebagai alternatif. Setidaknya Anda hanya memiliki waktu satu minggu untuk menunggu VS2017 dirilis :)
DavidG
Itu benar, terima kasih! Versi DOT NET CLI apa yang saya butuhkan jika saya menggunakan Kode VS ?
David Pine
2
@ThePartyTurtle Agar adil, itu akan meminta VS2015 untuk memahami format file yang tidak akan pernah didukung.
DavidG
44

Saya mengalami masalah ini saat membuka Layanan Fabric GettingStartedApplication di Visual Studio 2015. Solusi asli dibangun di atas .NET Core di VS 2017 dan saya mendapatkan kesalahan yang sama ketika membuka di 2015.

Berikut adalah langkah-langkah yang saya ikuti untuk menyelesaikan masalah ini.

  • Klik kanan pada proyek (load Failed) dan edit di visual studio.
  • Lihat baris berikut di tag Proyek: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Ikuti instruksi yang ditampilkan dalam pesan kesalahan untuk ditambahkan xmlns="http://schemas.microsoft.com/developer/msbuild/2003"ke tag ini

Seharusnya sekarang terlihat seperti:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Reload proyek memberi saya kesalahan berikutnya (Anda mungkin berbeda berdasarkan apa yang termasuk dalam proyek Anda)

Elemen "Pembaruan" <None> tidak dikenal

  • Melihat bahwa tidak ada elemen yang memiliki atribut pembaruan seperti di bawah ini:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Mengomentari seperti di bawah ini.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • Ke kesalahan berikutnya: Versi dalam Paket Referensi tidak dikenali Versi dalam elemen <PackageReference> tidak dikenali

  • Melihat bahwa Versi ada di csproj xml seperti di bawah ini (garis PackageReference tambahan dihapus untuk singkatnya)

  • Melucuti atribut Versi

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Saya sekarang mendapatkan yang berikut: Pembaruan Otomatis VS

Bingo! Visual Studio One-way upgrade dimulai! Biarkan VS melakukan keajaiban!

  • Proyek dimuat tetapi dengan kesalahan lib referensi. masukkan deskripsi gambar di sini

  • Memperbaiki kesalahan lib referensi secara individual, dengan menghapus dan mengganti di NuGet agar proyek berfungsi!

Semoga ini bisa membantu traveler kode lain :-D

Jersey_Guy
sumber
3
@ DavidVG Ini bukan buang-buang waktu karena tidak semua proyek memiliki cabang VS2015.
usr-bin-drinking
Perlu menambahkan bahwa Anda harus mengklik "Tampilkan Semua File" di bilah alat Solution Explorer untuk melihat folder proyek, lagi. Mereka akan muncul "putus-putus" dan Anda harus mengklik kanan dan memilih masing-masing dan memilih "Sertakan dalam Proyek" untuk melembagakan kembali mereka.
vapcguy
Ini persis masalah yang saya hadapi .. langkah demi langkah mengikuti mereka .. Terima kasih !!
Samra
14

@ DavidG jawaban sudah benar, tetapi saya ingin menambahkan bahwa jika Anda membangun dari baris perintah, solusi yang setara adalah memastikan bahwa Anda menggunakan versi yang sesuai dari msbuild (dalam kasus khusus ini, itu perlu versi 15).

Jalankan msbuild /?untuk melihat versi mana yang Anda gunakan atau where msbuilduntuk memeriksa lokasi darimana lingkungan mengambil executable dan memperbarui (atau menunjuk ke lokasi yang tepat) alat jika perlu.

Unduh alat MSBuild terbaru dari sini .

Nikita G.
sumber
6

Jika mendapatkan kesalahan ini saat mencoba membangun aplikasi .Net Core 2.0 di VSTS maka pastikan definisi build Anda menggunakan Hosted VS2017antrian Agen.

Scotty.NET
sumber
Saya punya masalah serupa dengan proyek Fungsi VS Azure yang menargetkan kerangka kerja. Net tapi masih menghasilkan file csproj dalam format inti. Perbaikan ini berhasil untuk saya.
ElliotSchmelliot
3

Saya mendapatkan pesan yang sama ketika saya menjalankan hanya msbuild dari PowerShell.

dotnet msbuild "./project.csproj" bekerja untukku.

Anda memerintah
sumber
Ini pada dasarnya jawaban yang sama dengan yang ini . Anda harus menggunakan versi terbaru dari msbuild.
DavidG
0

jika proyeknya tidak besar,

1- mengubah nama proyek folder

2- membuat proyek baru dengan proyek yang sama (sebelum mengganti nama)

3- menambahkan file yang ada dari proyek lama ke proyek baru (sama sekali, folder yang sama, nama yang sama, ...)

4- buka file proyek baru (sebagai xml) dan proyek lama

5- menyalin file proyek baru (konten xml) dan menempelkannya di file proyek lama

6- hapus proyek lama

7- ganti nama proyek folder lama ke nama lama

Mohammad Ahmad Abdullah
sumber