Простір імен XML проекту за замовчуванням повинен бути простором імен MSBuild XML


150

Я клонував локально ASP.NET Core SignalR Repo і намагаюся відкрити рішення з наступного середовища.

ІДЕ

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 : error: Простір імен 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

Я хочу знати, як це правильно виправити.


Я просто припустив, що зможу, це припущення, яке я не повинен робити? Я би сподівався, що це зворотно сумісне.
Девід Пайн

1
Я отримую цю помилку після дозволу VS2017 RTM оновити формат проекту :-(
Simon_Weaver

я розмістив подібну помилку тут .. stackoverflow.com/questions/58336983/… , проте в моєму випадку я починаю з нового програмного забезпечення, не намагаючись відкрити існуючий.
joedotnot

Відповіді:


212

Проекти, які ви намагаєтесь відкрити, є у новому форматі .NET Core csproj. Це означає, що вам потрібно використовувати Visual Studio 2017, який підтримує цей новий формат.

Трохи історії, спочатку .NET Core використовувався project.jsonзамість *.csproj. Однак, після значних внутрішніх роздумів у Microsoft, вони вирішили повернутися до, csprojале з набагато більш чистим та оновленим форматом. Однак цей новий формат підтримується лише у VS2017.

Якщо ви хочете відкрити проекти , але не хочете чекати до 7 березня го офіційного релізу VS2017, ви можете використовувати Visual Studio - код.


Я дуже добре знайомий з історією, напевно, я просто припускав, що це спрацює. Помилка не здається, що це занадто далеко від сфери можливих. Ви впевнені, що наразі немає можливості змусити це працювати з мінімальними зусиллями, без RC- бітів Visual Studio 2017 ?
Девід Пайн

Не з VS2015, ні. Тому я запропонував VS Code як альтернативу. Принаймні у вас є лише тиждень, щоб чекати виходу VS2017 :)
DavidG

Це правда, дякую! Яка версія DOT NET CLI мені потрібна, якщо я буду використовувати VS-код ?
Девід Пайн

2
@ThePartyTurtle Чесно кажучи, це попросить VS2015 зрозуміти формат файлу, який він ніколи не підтримуватиме.
DavidG

44

Я зіткнувся з цим питанням під час відкриття сервісної тканини GettingStartedApplication у Visual Studio 2015. Оригінальне рішення було побудоване на .NET Core у VS 2017, і я отримав таку ж помилку під час відкриття у 2015 році.

Ось кроки, які я дотримувався, щоб вирішити проблему.

  • Клацніть правою кнопкою миші проект (завантаження не вдалося) та відредагуйте у візуальній студії.
  • У тезі Project побачив наступний рядок: <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">
  • Перезавантаження проекту призвело до наступної помилки (ваша може відрізнятися залежно від того, що включено у ваш проект)

Елемент "update" <None> не розпізнається

  • Бачили, що жоден елемент не мав атрибуту оновлення, як показано нижче:

    <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

Бінго! Візуальне оновлення студії в одну сторону почалося! Нехай ВС робить магію!

  • Проект завантажений, але з помилками посилань. введіть тут опис зображення

  • Виправляйте помилки в довільній ліберті окремо, видаляючи та замінюючи в NuGet, щоб проект працював!

Сподіваюсь, це допомагає іншому мандрівникові коду :-D


3
@DavidG Це ​​не марно часу, оскільки не всі проекти мають відділення VS2015.
usr-bin-

Потрібно додати, що вам потрібно знову натиснути "Показати всі файли" на панелі інструментів Провідник рішень, щоб знову побачити папки проекту. Вони з’являться "пунктирними", і вам потрібно буде клацнути правою кнопкою миші та вибрати кожен з них та вибрати "Включити у проект", щоб відновити їх.
vapcguy

Це були саме проблеми, з якими я стикався .. крок за кроком слідував за ними .. Дякую !!
Самра

14

@ Відповідь DavidG правильна, але я хотів би додати, що якщо ви будуєте з командного рядка, еквівалентним рішенням є переконатися, що ви використовуєте відповідну версію msbuild(у цьому конкретному випадку це повинна бути версія 15).

Запустіть, msbuild /?щоб побачити, яку версію ви використовуєте, або where msbuildперевірте, яке місце займає оточуюче середовище, і оновіть (або вкажіть на потрібне місце) інструменти, якщо це необхідно.

Завантажте найновіший інструмент MSBuild звідси .


6

Якщо ви отримуєте цю помилку, намагаючись створити додаток .Net Core 2.0 на VSTS, то переконайтесь, що для визначення збірки використовується Hosted VS2017черга агента.


У мене була подібна проблема з проектом VS Azure Functions, який орієнтувався на .net Framework, але все-таки генерував файл csproj в основному форматі. Це виправлення працювало для мене.
ElliotSchmelliot

3

Я отримував ті ж повідомлення, коли я запускав тільки msbuild з powershell.

dotnet msbuild "./project.csproj" працював на мене.


Це в основному така ж відповідь, як і ця . Потрібно використовувати останню версію msbuild.
DavidG

0

якщо проект не великий,

1- змінити назву проекту папки

2- зробити новий проект з тим же проектом (перед перейменуванням)

3- додати в новий проект існуючі файли зі старого проекту (абсолютно однакові, однакові папки, однакові імена, ...)

4- відкрийте новий файл проекту (як xml) та старий проект

5- скопіюйте новий файл проекту (вміст xml) та вставте його у старий файл проекту

6- видалити старий проект

7- перейменуйте проект старої папки на старе ім'я

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.