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

时间:2017-02-28 12:54:35

标签: asp.net-mvc asp.net-core visual-studio-2015 msbuild .net-core

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

IDE

BiFunction

DOT NET CLI

Microsoft Visual Studio Enterprise 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.6.01055

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

  

λ 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   :错误:项目的默认XML命名空间必须是   MSBuild XML命名空间。如果项目是在MSBuild 2003中创作的   格式,请添加   ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj到    元件。如果项目是在旧的1.0或   1.2格式,请将其转换为MSBuild 2003格式。 xmlns="http://schemas.microsoft.com/developer/msbuild/2003"

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

6 个答案:

答案 0 :(得分:181)

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

对于一些历史记录,最初.Net Core使用<link href="https://necolas.github.io/normalize.css/5.0.0/normalize.css" rel="stylesheet"/> <div class="wrapper"> <div> <h1>min-height: 100vh;</h1> <h2>why is there a scrollbar here?</h2> </div> <div> Be sure to expand window. <a href="#">skill one</a> <a href="#">skill one</a> <a href="#">skill one</a> <a href="#">skill one</a> </div> </div>而不是project.json。然而,经过微软的一些内部审议后,他们决定回到*.csproj,但采用更清晰,更新的格式。但是,这种新格式仅在VS2017中受支持。

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

答案 1 :(得分:29)

我在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">
  • 重新加载项目给了我下一个错误(根据项目中包含的内容,您的错误可能会有所不同)

"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行)<​​/ p>

  • 剥离版本属性

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

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

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

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

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

答案 2 :(得分:11)

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

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

here下载最新的MSBuild工具。

答案 3 :(得分:6)

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

答案 4 :(得分:2)

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

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

答案 5 :(得分:0)

如果项目不大,

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

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

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

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

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

6-删除旧项目

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