我目前有一个Xamarin.Android项目,该项目引用了引用AutoMapper 5.0.2的.NET Standard 1.1库。
当我尝试通过VSTS构建时,我收到此错误
C:\ Program Files (86)\的MSBuild \ Xamarin \的Android \ Xamarin.Android.Common.targets(1316,2): 错误:加载程序集时出现异常: System.IO.FileNotFoundException:无法加载程序集 'System.Collections.Specialized,Version = 4.0.1.0,Culture = neutral, 公钥= b03f5f7f11d50a3a”。也许它不存在于Mono中 对于Android个人资料?
此解决方案在我的本地计算机上构建完美,并在Android模拟器中运行。
我尝试过的事情(没有一个有效)
<CopyNuGetImplementations>true</CopyNuGetImplementations>
。另外,作为旁注,我在整个项目中都有.NET Standard 1.1库,但我可以从构建日志中看到它使用.NET Standard 1.3。不确定这是否会产生影响,因为我不确定构建过程如何管理这些标准。
从中复制文件 “C:\用户\ buildguest.nuget \包\ AutoMapper \ 5.0.2 \ LIB \ netstandard1.3 \ AutoMapper.dll” 到“C:\ a \ 1 \ b / Release \ AutoMapper.dll”。
更新1
只是补充说我已经尝试在构建代理中使用Nuget 3.4.4和Nuget 3.5.0-beta2,虽然这解决了我遇到的其他问题,但它并没有解决我遇到的当前问题。
更新2
这是我的Android project.json
{
"dependencies": {
"Newtonsoft.Json": "9.0.1"
},
"frameworks": {
"MonoAndroid,Version=v6.0": {}
},
"runtimes": {
"win": {}
}
}
这是我的Portable project.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日 只需添加更多测试用例
在VSTS的Visual Studio Build步骤中,我无法获得AutoMapper 5.0.2参考的空白项目。总是和上面一样的错误。
答案 0 :(得分:1)
我相信您需要添加构建步骤以在构建时下载最新的NuGet.exe,然后通过构建脚本调用nuget restore或配置VSTS NuGet Restore任务的备用路径以使用您下载的那个
问题是与VSTS捆绑在一起的NuGet.exe太旧了。
您可以在此处找到直接下载路径: https://dist.nuget.org/index.html
答案 1 :(得分:1)
这是由Hosted Build Agent上安装的旧Xamarin版本引起的。托管构建代理程序上安装的版本是#34; Xamarin for Visual Studio 4.0.3.214&#34;。我部署了一个内部构建代理并安装了此版本,然后使用此构建代理对构建进行排队,构建将失败并显示相同的错误消息。将版本升级到最新的4.1.1.3版本后,构建成功完成。
因此,解决此问题的方法是deploy your own build agent,并在其上安装最新的Xamarin。然后使用此内部部署构建代理运行构建。