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

问题描述:

我在本地克隆ASP.NET Core SignalR Repo,然后尝试从以下环境中打开解决方案。项目的默认XML名称空间必须是MSBuild XML名称空间

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 : The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

我想知道如何解决这个问题等方式。

+0

我只是假设我能做到这一点,我不应该这样做?我希望这是向后兼容的。 –

+1

嗯,我得到这个错误后允许VS2017 RTM更新项目格式:-( –

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

对于一点点的历史,最初.Net Core使用project.json而不是*.csproj。然而,在微软进行了一些相当大的内部审议之后,他们决定回到csproj,但以更清晰和更新的格式。但是,这种新格式仅在VS2017中受支持。

如果您想要打开项目,但不想等到3月7日正式发布VS2017,则可以改为使用Visual Studio代码。

+0

我对历史非常熟悉,我想我只是假设这会工作。错误似乎不是太过分了离开了可能的领域。如果没有** Visual Studio 2017 RC **位,您是否确定无法在最短的时间内完成这项工作? –

+0

不符合VS2015,没有。这就是为什么我提供VS Code作为替代方案。至少你只有一个星期等待VS2017被释放:) – DavidG

+0

这是真的,谢谢!如果我要使用** VS Code **,我需要** DOT NET CLI **的哪个版本? –

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

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

here下载最新的MSBuild工具。

我就遇到了这个问题,同时在Visual Studio 2015年原来的解决方案是在2017年VS建立在.NET的核心打开服务织物GettingStartedApplication并于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"> 
  • 重新加载项目给了我下一个错误(你的可能会不同基于什么是包含在你的项目T)

"Update" element <None> is unrecognized

  • 看到,无元素有一个更新的属性如下:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views"> 
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </None> 
    
  • 评论说,列如下。

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views"> 
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </None>--> 
    
  • 到下一错误:版本在封装参考是无法识别的 Version in element <PackageReference> is unrecognized

  • 看到版是有在的csproj XML如下(为简洁移除附加PackageReference线)

  • 剥离版本属性

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" /> 
    <PackageReference Include="Microsoft.AspNetCore.Mvc" /> 
    
  • 我现在得到以下几点: VS Auto Upgrade

宾果! Visual Studio单向升级已启动!让VS做魔术!

  • 该项目加载但引用lib错误。 enter image description here

  • 通过在NuGet中删除和替换来获取项目工作,单独修复了引用lib错误!

希望这有助于另一个代码旅客:-D

+2

尽管做了所有这些工作都是浪费时间,但[链接](https://azure.microsoft.com/en-us/resources/samples/service-fabric-dotnet-getting-started/)你发布到项目中指出VS2015项目位于[vs2015分支](https://github.com/Azure-Samples/service-fabric-dotnet-getting-started/tree/vs2015)。 – DavidG

+0

不错的一个!没有意识到我可以追捕一个2015年的分支。谢谢@DavidG –

+1

哇的人。这就像一个魅力。你是一个救生员兄弟。 。 –

如果收到此错误试图建立在VSTS的.Net核心2.0应用程序,然后确保您的构建定义使用Hosted VS2017代理队列。