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

Posted

技术标签:

【中文标题】项目的默认 XML 命名空间必须是 MSBuild XML 命名空间【英文标题】:The default XML namespace of the project must be the MSBuild XML namespace 【发布时间】:2017-07-19 10:58:24 【问题描述】:

我在本地克隆了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

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

【问题讨论】:

我只是假设我能够做到,这是我不应该做的假设吗?我希望这是向后兼容的。 好吧,在允许 VS2017 RTM 更新项目格式后,我得到了这个错误:-( 我在这里发布了类似的错误..***.com/questions/58336983/…,但是在我的情况下,我从一个新项目开始,而不是尝试打开现有项目。 【参考方案1】:

您尝试打开的项目采用新的 .NET Core csproj 格式。这意味着您需要使用支持这种新格式的 Visual Studio 2017。

回顾一下历史,最初 .NET Core 使用 project.json 而不是 *.csproj。然而,在 Microsoft 进行了相当多的内部审议后,他们决定回到csproj,但格式更清晰、更更新。但是,这种新格式仅在 VS2017 中支持。

如果您想打开项目但又不想等到 3 月 7 日th VS2017 正式发布,您可以改用 Visual Studio Code。

【讨论】:

我对历史非常熟悉,我想我只是假设这会起作用。该错误似乎与可能的领域相去甚远。如果没有 Visual Studio 2017 RC 位,您是否确定暂时无法以最小的努力使其工作? 不适用于 VS2015,没有。这就是我提供 VS Code 作为替代方案的原因。至少你只有一周的时间等待 VS2017 发布 :) 确实如此,谢谢!如果我要使用 VS Code,我需要什么版本的 DOT NET CLI @ThePartyTurtle 公平地说,这将要求 VS2015 理解它永远不会支持的文件格式。【参考方案2】:

我在 Visual Studio 2015 中打开 Service Fabric GettingStartedApplication 时遇到了这个问题。最初的解决方案是在 VS 2017 中基于 .NET Core 构建的,我在 2015 年打开时遇到了同样的错误。

这是我解决问题所遵循的步骤。

右键单击(加载失败)项目并在 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 元素具有如下更新属性:

<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

注释如下。

<!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>-->

转到下一个错误:无法识别包参考中的版本

看到下面的 csproj xml 中有版本(为简洁起见,删除了附加的 PackageReference 行)

去掉版本属性

<PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" />

我现在得到以下信息:

Bingo! Visual Studio 单向升级启动!让 VS 变魔术!

项目已加载,但存在引用库错误。

通过在 NuGet 中删除和替换以使项目正常运行,单独修复了引用库错误!

希望这对其他代码旅行者有所帮助:-D

【讨论】:

@DavidG 这不是浪费时间,因为并非所有项目都有 VS2015 分支。 需要补充一点,您必须单击解决方案资源管理器工具栏中的“显示所有文件”才能再次查看项目的文件夹。它们将显示为“点状”,您需要右键单击并选择每一个,然后选择“包含在项目中”以重新插入它们。 这些正是我面临的问题..一步一步跟着他们..谢谢!!【参考方案3】:

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

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

从here下载最新的MSBuild工具。

【讨论】:

【参考方案4】:

如果尝试在 VSTS 上构建 .Net Core 2.0 应用程序时遇到此错误,请确保您的构建定义使用 Hosted VS2017 代理队列。

【讨论】:

我在一个针对 .net 框架但仍以核心格式生成 csproj 文件的 VS Azure Functions 项目中遇到了类似的问题。这个修复对我有用。【参考方案5】:

当我从 powershell 运行 msbuild 时,我收到了相同的消息。

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

【讨论】:

这与this one的答案基本相同。您需要使用最新版本的 msbuild。【参考方案6】:

如果项目不大,

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

2-用相同的项目创建一个新项目(重命名之前)

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

4- 打开新项目文件(如 xml)和旧项目

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

6-删除旧项目

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

【讨论】:

以上是关于项目的默认 XML 命名空间必须是 MSBuild XML 命名空间的主要内容,如果未能解决你的问题,请参考以下文章

VS2015-项目的默认XML名称空间必须是MSBuild XML名称空间

项目默认的 XML 命名空间必须是在 Visual Studio 2017.0 中安装 .Net Core 3 后的 MSBuild XML 命名空间错误

在 CI/CD 实施期间使用 MSBuild 构建 SSIS 项目时出错

在老师的电脑上打开项目的问题

Appveyoyr 无法构建 ASP.NET Core WebApi 项目

默认情况下声明了哪些 XML 命名空间?