项目的默认 XML 命名空间必须是 MSBuildXML 命名空间

我在本地克隆了 NET 核心信号回购,并尝试在以下环境中打开解决方案。

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 : error: 项目的默认 XML 命名空间必须是 如果项目是在 MSBuild2003中创建的,则为 MSBuildXML 命名空间 格式,请添加 xmlns="http://schemas.microsoft.com/developer/msbuild/2003"到 如果项目是在旧的1.0或 1.2格式,请转换为 MSBuild2003格式

我想知道如何正确解决这个问题。

197256 次浏览

您试图打开的项目位于新的。核心 csproj 格式。这意味着您需要使用支持此新格式的 VisualStudio2017。

一开始只是为了了解一点历史。NET 核心使用 project.json而不是 *.csproj。然而,经过微软内部的一些深思熟虑,他们决定回到 csproj,但采用更清晰和更新的格式。但是,这种新格式仅在 VS2017中受支持。

如果您希望打开这些项目,但又不想等到3月7这个才发布正式的 VS2017版本,那么可以使用 VisualStudio 代码。

@ DavidG 的回答是正确的,但是我想补充的是,如果你是从命令行构建,等价的解决方案是确保你使用的是适当的版本的 msbuild(在这个特殊的情况下,它需要是版本15)。

运行 msbuild -version来查看您使用的是哪个版本,或者运行 where msbuild来检查环境从哪个位置接收可执行文件,并在必要时更新(或指向正确的位置)工具。

给你下载最新的 MSBuild 工具。

我在 VisualStudio2015中打开 ServiceFabric入门应用时遇到了这个问题。最初的解决方案是建立在。NET 核心在 VS2017和我得到了相同的错误时,打开在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" element <None> is unrecognized

  • 发现 Nothing 元素具有如下更新属性:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
    
  • Commented that out as below.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
    
  • Onto the next error: Version in Package Reference is unrecognized Version in element <PackageReference> is unrecognized

  • Saw that Version is there in csproj xml as below (Additional PackageReference lines removed for brevity)

  • Stripped the Version attribute

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
    
  • I now get the following: VS Auto Upgrade

Bingo! The visual Studio One-way upgrade kicked in! Let VS do the magic!

  • The Project loaded but with reference lib errors. enter image description here

  • Fixed the reference lib errors individually, by removing and replacing in NuGet to get the project working!

Hope this helps another code traveler :-D

如果尝试构建这个错误。VSTS 上的 Net Core 2.0应用程序,然后确保构建定义正在使用 Hosted VS2017代理队列。

当我在 Powershell 上运行 msbuild 时,我收到了相同的消息。

dotnet msbuild "./project.csproj"为我工作。

如果这个项目不是很大,

1-更改文件夹项目的名称

2-使用相同的项目制作一个新项目(在重命名之前)

将旧项目中的现有文件添加到新项目中(完全相同,相同的文件夹,相同的名称,...)

4-打开新的项目文件(作为 xml)和旧的项目

5-复制新的项目文件(xml 内容)并将其粘贴到旧的项目文件中

6-删除旧项目

7-将旧文件夹项目重命名为旧名称

我有同样的问题,并解决了它使用 dotnet而不是 msbuild