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

我在本地克隆了ASP.NET Core SignalR Repo ,并尝试从以下环境中打开解决scheme。

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

我想知道如何解决这个正确的方法。

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

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

如果你想打开项目,但不想等到3月7日才能发布正式的VS2017版本,那么你可以使用Visual Studio代码。

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

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

从这里下载最新的MSBuild工具。

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

以下是我为解决问题所遵循的步骤。

  • 右键点击(加载失败)项目并在Visual Studio中编辑。
  • 在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"> 
  • 重新加载项目给了我下一个错误(你的项目可能会有所不同)

“更新”元素<None>无法识别

  • 看到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行被删除)

  • 剥离了版本属性

     <PackageReference Include="Microsoft.AspNetCore.Diagnostics" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" /> 
  • 我现在得到以下内容: VS自动升级

答对了! 视觉工作室单向升级踢了! 让VS做魔术!

  • 该项目加载,但与参考库错误。 在这里输入图像说明

  • 通过在NuGet中删除和replace来修复引用lib错误,以使项目正常工作!

希望这有助于另一位代码旅行者:-D