.NET Standard 2.0 Xamarin.iOS 项目 VSTS 构建问题
.NET Standard 2.0 Xamarin.iOS project VSTS build issue
目前我正在尝试升级 Xamarin.Forms 项目以使用 .NET Standard 2.0。这对 Android 很好,但我被 iOS 版本卡住了。为了构建 iOS,我们使用 On-Primise MacMini 作为构建代理 int VSTS。现在我在构建解决方案时遇到以下错误。
=================================
..更多类似下面的错误...
2017-11-21T11:39:43.8920830Z ViewModels/DashboardViewModel.cs(66,35):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj]
2017-11-21T11:39:43.9014700Z ViewModels/DashboardViewModel.cs(66,73):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj]
2017-11-21T11:39:43.9036150Z ViewModels/DashboardViewModel.cs(66,93):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj]
2017-11-21T11:39:43.9053280Z
2017-11-21T11:39:43.9083060Z 6 个警告
2017-11-21T11:39:43.9107960Z 47 个错误
2017-11-21T11:39:43.9116100Z
2017-11-21T11:39:43.9131830Z 已用时间 00:00:59.23
2017-11-21T11:39:43.9327960Z ##[error]Xamarin.iOS 任务因错误错误而失败:/Library/Frameworks/Mono。framework/Versions/Current/Commands/msbuild 因 return 代码而失败:1. 指导有关设置构建定义的信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=760847。
2017-11-21T11:39:43.9575950Z [command]/usr/bin/security delete-keychain /Users/Admin/BuildAgent/_work/3/s/_xamariniostasktmp.keychain
2017-11-21T11:39:44.2658340Z ##[部分]完成:构建 Xamarin.iOS 解决方案 xxx.sln
=================================
此输出来自以下构建定义:
现在我已经在互联网上搜索并找到了可能的解决方案:
- 在 MacMini
上更新 Visual Studio
- 在 MacMini
上更新 XCode
- 在 MacMini
上安装 .NET Core 2.x SDK
- 将 .NET Standard 2.x NuGet 包添加到 Xamarin.IOS 项目
- 将 .NET 标准库 NuGet 预发布包添加到 Xamarin.iOS 项目(不可能)
- 手动引用 netstandard.dll 到 Xamarin.iOS 项目
- 删除安装参数(不使用它)
但是所有这些都不足以解决问题。现在我不是使用 Mac 的专家。其实在这个问题之前我从来没有碰过一个......所以我可能在这里做错了......
但我已经能够在 MacMini 上获得有关所有产品的一些版本信息:
========= Visual Studio =========
Visual Studio Mac 社区 2017
版本 7.2.2(构建 11)
安装 UUID:b43353ef-651c-468b-8b7d-3f1714586419
运行:
单声道 5.4.1.6 (2017-06/1f4613aa1ac)(64 位)
GTK+ 2.24.23(罗利主题)
包版本:504010006
NuGet
版本:4.3.1.4445
.NET核心
运行时间:/usr/local/share/dotnet/dotnet
运行时版本:2.0.3
SDK: /usr/local/share/dotnet/sdk/2.0.3/SDKs
开发工具包版本:2.0.3
MSBuild SDK:/Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks
Xamarin.Profiler
版本:1.5.6
位置:/Applications/Xamarin 探查器。app/Contents/MacOS/Xamarin 探查器
Xamarin.Android
未安装
Xamarin 检查器
未安装
苹果开发者工具
Xcode 9.1 (13532)
建造 9B55
Xamarin.iOS
版本:11.3.0.47(Visual Studio 社区)
哈希值:51128b8c
分支:xcode9.1
建造日期:2017-10-31 22:42:13-0400
Xamarin.Mac
Xamarin.Mac 未安装。找不到 /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/Version.
构建信息
版本号:702020011
Git 修订版:b604c37c5a4a2f0919b45ffbe2aaad9fe040af31
建造日期:2017-11-01 08:31:43-04
Xamarin 插件:d57dc14cbd4eb166ee62bab585965ab78d3650bc
构建通道:monodevelop-lion-d15-4
操作系统
Mac OS X 10.12.6
Darwin 16.7.0 达尔文内核版本 16.7.0
10 月 4 日星期三 00:17:00 PDT 2017
root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64
============= XCode =============
XCode 对于 Mac
版本 9.1 (9B55)
=============单声道==============
Mono JIT 编译器版本 5.4.1.6(2017-06/1f4613aa1ac,10 月 18 日星期三 09:31:57 EDT 2017)
版权所有 (C) 2002-2014 Novell, Inc、Xamarin Inc 和贡献者。 www.mono-project.com
TLS:正常
SIGSEGV:altstack
通知:kqueue
架构:amd64
已禁用:none
杂项:软调试
LLVM:是的(3.6.0svn-mono-master/8b1520c8aae)
GC:sgen(默认并发)
=========.NET Core SDK =========
.NET核心SDK
版本 2.0.3
=================================
该项目可以在 MacMini 本身上构建。只有 VSTS 任务一直失败...
有人有什么想法可以帮助我解决我的问题吗?
亲切的问候,
跳
在我们手动编辑 .NET Standard 2.0 项目文件 (*.csproj) 并手动添加 PackageReference 后,一切开始正常运行。
<ItemGroup>
...
<PackageReference Include="NETStandard.Library" version="2.0.0" />
...
</ItemGroup>
目前我正在尝试升级 Xamarin.Forms 项目以使用 .NET Standard 2.0。这对 Android 很好,但我被 iOS 版本卡住了。为了构建 iOS,我们使用 On-Primise MacMini 作为构建代理 int VSTS。现在我在构建解决方案时遇到以下错误。
=================================
..更多类似下面的错误...
2017-11-21T11:39:43.8920830Z ViewModels/DashboardViewModel.cs(66,35):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj] 2017-11-21T11:39:43.9014700Z ViewModels/DashboardViewModel.cs(66,73):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj] 2017-11-21T11:39:43.9036150Z ViewModels/DashboardViewModel.cs(66,93):错误 CS0012:类型 'Object' 在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的引用。 [/Users/Admin/BuildAgent/_work/3/s/xxx.App/xxx.Core.csproj] 2017-11-21T11:39:43.9053280Z 2017-11-21T11:39:43.9083060Z 6 个警告 2017-11-21T11:39:43.9107960Z 47 个错误 2017-11-21T11:39:43.9116100Z 2017-11-21T11:39:43.9131830Z 已用时间 00:00:59.23 2017-11-21T11:39:43.9327960Z ##[error]Xamarin.iOS 任务因错误错误而失败:/Library/Frameworks/Mono。framework/Versions/Current/Commands/msbuild 因 return 代码而失败:1. 指导有关设置构建定义的信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=760847。 2017-11-21T11:39:43.9575950Z [command]/usr/bin/security delete-keychain /Users/Admin/BuildAgent/_work/3/s/_xamariniostasktmp.keychain 2017-11-21T11:39:44.2658340Z ##[部分]完成:构建 Xamarin.iOS 解决方案 xxx.sln
=================================
此输出来自以下构建定义:
现在我已经在互联网上搜索并找到了可能的解决方案:
- 在 MacMini 上更新 Visual Studio
- 在 MacMini 上更新 XCode
- 在 MacMini 上安装 .NET Core 2.x SDK
- 将 .NET Standard 2.x NuGet 包添加到 Xamarin.IOS 项目
- 将 .NET 标准库 NuGet 预发布包添加到 Xamarin.iOS 项目(不可能)
- 手动引用 netstandard.dll 到 Xamarin.iOS 项目
- 删除安装参数(不使用它)
但是所有这些都不足以解决问题。现在我不是使用 Mac 的专家。其实在这个问题之前我从来没有碰过一个......所以我可能在这里做错了......
但我已经能够在 MacMini 上获得有关所有产品的一些版本信息:
========= Visual Studio =========
Visual Studio Mac 社区 2017 版本 7.2.2(构建 11) 安装 UUID:b43353ef-651c-468b-8b7d-3f1714586419 运行: 单声道 5.4.1.6 (2017-06/1f4613aa1ac)(64 位) GTK+ 2.24.23(罗利主题)
包版本:504010006
NuGet 版本:4.3.1.4445
.NET核心 运行时间:/usr/local/share/dotnet/dotnet 运行时版本:2.0.3 SDK: /usr/local/share/dotnet/sdk/2.0.3/SDKs 开发工具包版本:2.0.3 MSBuild SDK:/Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks
Xamarin.Profiler 版本:1.5.6 位置:/Applications/Xamarin 探查器。app/Contents/MacOS/Xamarin 探查器
Xamarin.Android 未安装
Xamarin 检查器 未安装
苹果开发者工具 Xcode 9.1 (13532) 建造 9B55
Xamarin.iOS 版本:11.3.0.47(Visual Studio 社区) 哈希值:51128b8c 分支:xcode9.1 建造日期:2017-10-31 22:42:13-0400
Xamarin.Mac Xamarin.Mac 未安装。找不到 /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/Version.
构建信息 版本号:702020011 Git 修订版:b604c37c5a4a2f0919b45ffbe2aaad9fe040af31 建造日期:2017-11-01 08:31:43-04 Xamarin 插件:d57dc14cbd4eb166ee62bab585965ab78d3650bc 构建通道:monodevelop-lion-d15-4
操作系统 Mac OS X 10.12.6 Darwin 16.7.0 达尔文内核版本 16.7.0 10 月 4 日星期三 00:17:00 PDT 2017 root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64
============= XCode =============
XCode 对于 Mac 版本 9.1 (9B55)
=============单声道==============
Mono JIT 编译器版本 5.4.1.6(2017-06/1f4613aa1ac,10 月 18 日星期三 09:31:57 EDT 2017) 版权所有 (C) 2002-2014 Novell, Inc、Xamarin Inc 和贡献者。 www.mono-project.com TLS:正常 SIGSEGV:altstack 通知:kqueue 架构:amd64 已禁用:none 杂项:软调试 LLVM:是的(3.6.0svn-mono-master/8b1520c8aae) GC:sgen(默认并发)
=========.NET Core SDK =========
.NET核心SDK 版本 2.0.3
=================================
该项目可以在 MacMini 本身上构建。只有 VSTS 任务一直失败...
有人有什么想法可以帮助我解决我的问题吗?
亲切的问候, 跳
在我们手动编辑 .NET Standard 2.0 项目文件 (*.csproj) 并手动添加 PackageReference 后,一切开始正常运行。
<ItemGroup>
...
<PackageReference Include="NETStandard.Library" version="2.0.0" />
...
</ItemGroup>