Không gian tên XML mặc định của dự án phải là không gian tên XML MSBuild


150

Tôi đã nhân bản ASP.NET Core SignalR Repo cục bộ và thử mở giải pháp từ trong môi trường sau.

Ý tưởng

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

Tôi cuối cùng đã nhìn thấy rất nhiều các loại thông báo lỗi:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: Không gian tên XML mặc định của dự án phải là không gian tên XML MSBuild. Nếu dự án được tác giả ở định dạng MSBuild 2003, vui lòng thêm xmlns="http://schemas.microsoft.com/developer/msbuild/2003"vào phần tử. Nếu dự án đã được tác giả ở định dạng 1.0 hoặc 1.2 cũ, vui lòng chuyển đổi nó sang định dạng MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Tôi muốn biết làm thế nào để sửa lỗi này một cách chính xác.


Tôi chỉ cho rằng tôi sẽ có thể, đó có phải là một giả định tôi không nên làm? Tôi hy vọng rằng điều này là tương thích ngược.
David Pine

1
Chà, tôi đang gặp lỗi này sau khi cho phép VS2017 RTM cập nhật định dạng dự án :-(
Simon_Weaver

tôi đã đăng một lỗi tương tự ở đây .. stackoverflow.com/questions/58336983/ , tuy nhiên trong trường hợp của tôi, tôi đang bắt đầu với một proj mới, không cố mở một cái hiện có.
joedotnot

Câu trả lời:


212

Các dự án bạn đang cố mở là ở định dạng .NET Core csproj mới. Điều này có nghĩa là bạn cần sử dụng Visual Studio 2017 hỗ trợ định dạng mới này.

Đối với một chút lịch sử, ban đầu .NET Core được sử dụng project.jsonthay vì *.csproj. Tuy nhiên, sau một số cân nhắc nội bộ đáng kể tại Microsoft, họ đã quyết định quay lại csprojnhưng với định dạng cập nhật và gọn gàng hơn nhiều. Tuy nhiên, định dạng mới này chỉ được hỗ trợ trong VS2017.

Nếu bạn muốn mở các dự án nhưng không muốn chờ đợi cho đến ngày 07 tháng 3 thứ cho việc phát hành VS2017 chính thức, bạn có thể sử dụng Visual Studio Mã để thay thế.


Tôi rất quen thuộc với lịch sử, tôi đoán tôi chỉ cho rằng điều này sẽ hoạt động. Lỗi không có vẻ như quá xa với lĩnh vực có thể. Bạn có chắc chắn rằng không có cách nào để làm cho điều này hoạt động với nỗ lực tối thiểu trong thời gian này, mà không có các bit RC của Visual Studio 2017 ?
David Pine

Không phải với VS2015, không. Đó là lý do tại sao tôi cung cấp Mã VS thay thế. Ít nhất bạn chỉ có một tuần để chờ đợi VS2017 được phát hành :)
DavidG

Đó là sự thật, cảm ơn! Tôi cần phiên bản nào của DOT NET CLI nếu tôi sử dụng VS Code ?
David Pine

2
@ThePartyTurtle Để công bằng, điều đó sẽ yêu cầu VS2015 hiểu một định dạng tệp mà nó sẽ không bao giờ hỗ trợ.
DavidG

44

Tôi gặp phải vấn đề này trong khi mở Service Fabric CatchStartedApplication trong Visual Studio 2015. Giải pháp ban đầu được xây dựng trên .NET Core trong VS 2017 và tôi đã gặp lỗi tương tự khi mở vào năm 2015.

Dưới đây là các bước tôi làm theo để giải quyết vấn đề.

  • Nhấp chuột phải vào dự án (tải thất bại) và chỉnh sửa trong studio hình ảnh.
  • Đã thấy dòng sau trong thẻ Project: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Làm theo hướng dẫn hiển thị trong thông báo lỗi để thêm xmlns="http://schemas.microsoft.com/developer/msbuild/2003"vào thẻ này

Bây giờ nó trông giống như:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Tải lại dự án đã cho tôi lỗi tiếp theo (lỗi của bạn có thể khác dựa trên những gì được bao gồm trong dự án của bạn)

Phần tử "Cập nhật" <Không> không được nhận dạng

  • Tôi thấy rằng phần tử Không có thuộc tính cập nhật như dưới đây:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
    
  • Nhận xét rằng ra như dưới đây.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
    
  • Lỗi tiếp theo: Phiên bản trong Tham chiếu gói không được nhận dạng Phiên bản trong phần tử <PackageReference> không được nhận dạng

  • Tôi thấy rằng Phiên bản đó có trong csproj xml như bên dưới (Các dòng GóiReference bổ sung được gỡ bỏ cho ngắn gọn)

  • Tước thuộc tính Phiên bản

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
    
  • Bây giờ tôi nhận được như sau: Nâng cấp tự động VS

Chơi lô tô! Studio trực quan nâng cấp một chiều bắt đầu! Hãy để VS làm điều kỳ diệu!

  • Dự án được tải nhưng có lỗi lib tham chiếu. nhập mô tả hình ảnh ở đây

  • Đã sửa lỗi các lỗi lib tham chiếu riêng lẻ, bằng cách xóa và thay thế trong NuGet để dự án hoạt động!

Hy vọng điều này sẽ giúp một khách du lịch mã khác :-D


3
@DavidG Không lãng phí thời gian vì không phải tất cả các dự án đều có chi nhánh VS2015.
usr-bin-uống

Cần thêm rằng bạn phải bấm "Show All Files" trên thanh công cụ Solution Explorer để xem lại các thư mục của dự án. Chúng sẽ xuất hiện "chấm ra" và bạn sẽ cần nhấp chuột phải và chọn từng cái và chọn "Bao gồm trong dự án" để tái lập chúng trong.
vapcguy

Đây chính xác là những vấn đề mà tôi phải đối mặt .. từng bước theo họ..Cảm ơn !!
Samra

14

Câu trả lời của DavidG là đúng, nhưng tôi muốn nói thêm rằng nếu bạn đang xây dựng từ dòng lệnh, giải pháp tương đương là đảm bảo rằng bạn đang sử dụng phiên bản phù hợp của msbuild(trong trường hợp cụ thể này, nó cần phải là phiên bản 15).

Chạy msbuild /?để xem phiên bản nào bạn đang sử dụng hoặc where msbuildđể kiểm tra vị trí mà môi trường sẽ thực thi và cập nhật (hoặc trỏ đến đúng vị trí của) các công cụ nếu cần.

Tải về công cụ MSBuild mới nhất từ đây .


6

Nếu gặp lỗi này khi cố gắng xây dựng ứng dụng .Net Core 2.0 trên VSTS thì hãy đảm bảo định nghĩa bản dựng của bạn đang sử dụng Hosted VS2017hàng đợi Tác nhân.


Tôi gặp vấn đề tương tự với dự án VS Azure Chức năng nhắm mục tiêu khung .net nhưng vẫn tạo tệp csproj ở định dạng cốt lõi. Sửa chữa này làm việc cho tôi.
ElliotSchmelliot

3

Tôi đã nhận được những tin nhắn tương tự trong khi tôi chỉ chạy msbuild từ powershell.

dotnet msbuild "./project.csproj" đã làm cho tôi.


Đây là câu trả lời cơ bản giống như câu trả lời này . Bạn cần sử dụng phiên bản mới nhất của msbuild.
DavidG

0

nếu dự án không lớn

1- thay đổi tên của dự án thư mục

2- thực hiện một dự án mới với cùng một dự án (trước khi đổi tên)

3- thêm các tệp hiện có từ dự án cũ vào dự án mới (hoàn toàn giống nhau, cùng thư mục, cùng tên, ...)

4 - mở tệp dự án mới (dưới dạng xml) và dự án cũ

5- sao chép tệp dự án mới (nội dung xml) và dán nó vào tệp dự án cũ

6- xóa dự án cũ

7- đổi tên dự án thư mục cũ thành tên cũ

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.