xamarin - NetStandard 库未获得对 VSTS 构建代理的依赖关系

标签 xamarin msbuild xamarin.android azure-devops

我当前有一个 Xamarin.Android 项目,该项目引用了 .NET Standard 1.1 库,而该库又引用了 AutoMapper 5.0.2。

当我尝试通过 VSTS 构建它时,我收到此错误

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1316,2): Error : Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'System.Collections.Specialized, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile?

该解决方案在我的本地计算机上构建得非常好,并在 Android 模拟器中运行。

我尝试过的事情(但没有成功)

  1. 直接针对 Android 安装 AutoMapper Nuget 包 项目。
  2. 正在安装 System.Collections.Specialized在里面 安卓项目。
  3. 正在做<CopyNuGetImplementations>true</CopyNuGetImplementations>在 Android 项目中。

顺便说一句,我的项目中一直都有 .NET Standard 1.1 库,但我可以从构建日志中看到它使用 .NET Standard 1.3。不确定这是否会产生影响,因为我不确定构建过程如何管理这些标准。

Copying file from "C:\Users\buildguest.nuget\packages\AutoMapper\5.0.2\lib\netstandard1.3\AutoMapper.dll" to "C:\a\1\b/Release\AutoMapper.dll".

更新1

补充一下,我尝试在构建代理中使用 Nuget 3.4.4 和 Nuget 3.5.0-beta2,虽然这解决了我遇到的其他问题,但它没有解决我当前遇到的问题。

更新2

这是我的 Android 项目.json

{
  "dependencies": {
    "Newtonsoft.Json": "9.0.1"
  },
  "frameworks": {
    "MonoAndroid,Version=v6.0": {}
  },
  "runtimes": {
    "win": {}
  }
}

这是我的可移植项目.json

{
  "supports": {},
  "dependencies": {
    "AutoMapper": "5.0.2",
    "NETStandard.Library": "1.6.0",
    "Xamarin.Forms": "2.3.0.107"
  },
  "frameworks": {
    "netstandard1.1": {
      "imports": "portable-win+net45+wp8+win81+wpa8"
    }
  }
}

更新 3:7 月 18 日 只需添加更多测试用例

  1. 创建了一个全新的 Xamarin Android 项目,包含packages.config、现有的 nuget.exe。所有作品。
  2. 添加 AutoMapper 引用,在本地构建并运行。 VSTS 构建代理失败
  3. 更新了 Nuget.exe - 构建仍然失败
  4. 更新到project.json - 构建仍然失败。

我什至无法获得在 VSTS 的 Visual Studio 构建步骤中使用 AutoMapper 5.0.2 引用的空白项目。始终出现与上面相同的错误。

最佳答案

这是由Hosted Build Agent上安装的旧Xamarin版本引起的。托管构建代理上安装的版本是“Xamarin for Visual Studio 4.0.3.214”。我部署了一个本地构建代理并安装了此版本,然后使用此构建代理对构建进行排队,构建将失败并显示相同的错误消息。我将版本升级到最新的4.1.1.3版本后,构建成功完成。

因此,解决此问题的方法是 deploy your own build agent并在其上安装最新的 Xamarin。然后使用此本地构建代理运行您的构建。

关于xamarin - NetStandard 库未获得对 VSTS 构建代理的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38370304/

相关文章:

c# - Xamarin-遍历Android设备上的所有音频文件

c# - Xamarin 不断出现多个不同错误

c# - 如何在 MSBuild 单元测试中访问 teamcity 配置参数

c# - 在 MvvmCross Xamarin android 中使用事件处理程序在 View 中显示 toast

visual-studio - 从 msbuild 中的 nuget 导入 props 或目标

msbuild - 如何使用 TFS 创建单独的 Web 部署包

xamarin.forms - OidcClient2 - 在等待 LoginAsync 时关闭 IBrowser

c# - Xamarin : Unable to retrieve URLSpans from a TextView with links

ios - 无法从 Windows 上的 Visual Studio 2022 获取调试目标中的 iOS 模拟器列表

xamarin - 无法在 Visual Studio 2015 上设置 Android SDK