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


150

我在本地克隆了ASP.NET Core SignalR存储库,然后尝试从以下环境中打开解决方案。

集成开发环境

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

我想知道如何解决此正确方法。


我只是假设我能够做到,是我不应该做出的假设吗?我希望这是向后兼容的。
大卫·派恩

1
好吧,我在允许VS2017 RTM更新项目格式后收到此错误:-(
Simon_Weaver

我在这里发表类似的错误.. stackoverflow.com/questions/58336983/...在我的情况,但是我开始一个新的凸出,而不是试图打开一个现有的。
joedotnot

Answers:


212

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

回顾一下,最初使用.NET Core project.json代替*.csproj。但是,经过Microsoft的一些内部审议之后,他们决定csproj使用更整洁和更新的格式返回。但是,此新格式仅在VS2017中受支持。

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


我对这段历史非常熟悉,我想我只是认为这会起作用。该错误似乎离可能范围太远了。您是否确定没有Visual Studio 2017 RC位,暂时没有办法让它以最小的努力来工作?
大卫·派恩

不适用于VS2015,不。这就是为什么我提供VS Code作为替代方案的原因。至少您只有一个星期等待VS2017发布:)
DavidG

没错,谢谢!如果要使用VS Code,我需要什么版本的DOT NET CLI
大卫·派恩

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

44

在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>-->
  • 进入下一个错误:包参考中的版本无法识别 无法识别元素<PackageReference>中的版本

  • 看到csproj xml中存在以下版本(为简洁起见,删除了其他PackageReference行)

  • 剥离了Version属性

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

答对了!Visual Studio单向升级开始了!让VS做魔术!

  • 已加载项目,但存在参考库错误。 在此处输入图片说明

  • 通过删除和替换NuGet来使项目正常运行,从而分别修复了参考库错误。

希望这可以帮助另一个代码旅行者:-D


3
@DavidG这并不是浪费时间,因为并非所有项目都具有VS2015分支。
usr-bin-drinking

需要添加的是,您必须在解决方案资源管理器工具栏中单击“显示所有文件”,才能再次查看项目的文件夹。他们会出现“点缀出”,你会需要右键单击并选择每一个选择“包含的项目”,以重新提起他们进来
vapcguy

这些正是我所面临的问题..逐步解决了..谢谢!
萨姆拉

14

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

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

此处下载最新的MSBuild工具。


6

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


我对以.net框架为目标的VS Azure Functions项目有类似的问题,但仍以核心格式生成了csproj文件。此修复程序对我有用。
ElliotSchmelliot

3

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

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


这基本上是与这个答案相同的答案。您需要使用最新版本的msbuild。
DavidG,

0

如果项目不大,

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

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

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

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

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

6-删除旧项目

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.