Appveyoyr 无法构建 ASP.NET Core WebApi 项目

Posted

技术标签:

【中文标题】Appveyoyr 无法构建 ASP.NET Core WebApi 项目【英文标题】:Appveyoyr fails to build ASP.NET Core WebApi Project 【发布时间】:2018-05-22 16:51:44 【问题描述】:

我不断收到此错误:

错误 MSB4041:项目的默认 XML 命名空间必须是 MSBuild XML 命名空间。如果项目是在 MSBuild 2003 中创作的 格式,请补充 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 到 元素。如果项目是在旧 1.0 或 1.2格式,请转成MSBuild 2003格式。

我的项目是在 Rider 中设置的,它可以在本地顺利编译。我想这可能与 MSBuild 版本有关。

我的 appveyor.yml 看起来像这样:

version: 1.0.build
image: Visual Studio 2017
configuration: Release
platform: Any CPU
before_build:
- cmd: set ASPNETCORE_ENVIRONMENT=Production
build:
  project: BoatInspectorWebApi.sln
  verbosity: detailed

实在想不出到底发生了什么。

有没有人遇到过类似的问题?

UPDATE(详细日志和导出的 yml)] 我导出了 yml 来检查自己是否有错误,并做了详细的日志,打印错误的部分看起来像这样

使用“12.0”版工具构建。 C:\projects\boatinspectorwebapi\BoatInspectorWebApi\BoatInspectorWebApi.csproj(1,1):错误MSB4041:项目的默认XML命名空间必须是MSBuild XML命名空间。如果项目以 MSBuild 2003 格式创作,请将 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 添加到元素中。如果项目是以旧的 1.0 或 1.2 格式创作的,请将其转换为 MSBuild 2003 格式。 完成构建项目“C:\projects\boatinspectorwebapi\BoatInspectorWebApi\BoatInspectorWebApi.csproj”(默认目标)——失败。

看起来 Appveyor 正在使用 MsBuild 12,这会导致问题。我在本地使用 15 或 14,一切都很好。不确定是 14 还是 15 导致它们都已安装。无论如何,有谁知道是否可以在 Appveyor 中使用 15 进行构建?

【问题讨论】:

【参考方案1】:

请将image: Visual Studio 2017 添加到您的appveyor.yml

【讨论】:

不幸的是,这不起作用。我还不知道为什么...也许我应该尝试在本地使用 msbuild 直接与我们的骑手一起从命令行进行构建,看看是否有任何错误。 看起来是 msbuild 12 失败。在我的本地驱动器上,我使用 14 或 15...仍然是 12,如 Appveyor 的日志中所述【参考方案2】:

好的,所以问题很简单。实际上是 MsBuild 但无论如何它都会切换到版本 12,因为 Rider 将版本 12 硬编码到 sln 文件中,只需在 sln 文件中更改适当的版本目标,一切都会成功编译。

【讨论】:

以上是关于Appveyoyr 无法构建 ASP.NET Core WebApi 项目的主要内容,如果未能解决你的问题,请参考以下文章

安装 KB2993928 后无法构建 ASP.NET MVC4 解决方案

ASP.NET 核心模型验证无法按预期工作

ASP.NET 网络表单字段未正确对齐

我们可以在 ASP.Net 中使用大数据概念吗?

无法在 Mono 3 上的 xsp 上运行 asp.net 4.5 应用程序

Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求