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

Dav*_*ine 132 msbuild asp.net-mvc visual-studio-2015 .net-core asp.net-core

我在本地克隆了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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我最终看到了很多这类错误消息:

..\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

我想知道如何以正确的方式解决这个问题.

Dav*_*idG 195

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

对于一点历史,最初使用.Net Core project.json代替*.csproj.然而,经过微软的一些内部审议后,他们决定回归,csproj但采用更清晰,更新的格式.但是,这种新格式仅在VS2017中受支持.

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

  • @ThePartyTurtle公平地说,这将要求VS2015了解它永远不会支持的文件格式。 (2认同)

Jer*_*Guy 36

我在Visual Studio 2015中打开Service Fabric GettingStartedApplication时遇到了这个问题.原始解决方案是在VS 2017中基于.NET Core构建的,我在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">
Run Code Online (Sandbox Code Playgroud)
  • 重新加载项目给了我下一个错误(根据项目中包含的内容,您的错误可能会有所不同)

无法识别">

  • 看到None元素具有更新属性,如下所示:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
    
    Run Code Online (Sandbox Code Playgroud)
  • 评论如下.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
    
    Run Code Online (Sandbox Code Playgroud)
  • 在下一个错误上:无法识别包参考中的版本 元素<PackageReference>中的版本无法识别

  • 看到版本在csproj xml中如下所示(为简洁起见,删除了附加的PackageReference行)

  • 剥离了Version属性

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

答对了!视觉工作室单向升级开始了!让VS做神奇!

  • 项目已加载,但引用了lib错误. 在此输入图像描述

  • 通过删除和替换NuGet以使项目正常工作,单独修复了引用lib错误!

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

  • @DavidG这并不是浪费时间,因为并非所有项目都具有VS2015分支。 (3认同)
  • 哇哇 这就像一个魅力.你是一个救命的兄弟.. (2认同)

Nik*_* G. 11

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

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

这里下载最新的MSBuild工具.


Sco*_*NET 6

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


小智 5

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

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