Android 的 VSTS 构建定义失败
VSTS Build Definition for Android failing
我开始为 Xamarin Android 应用程序使用来自 Team Services 的构建定义。在 Visual Studio 中一切正常,我可以将代码签入 VS Team Services。
更新 1
现在,在为我的项目创建构建定义的那一刻,它正在下降。
这是日志的一部分:
2016-10-13T03:30:45.7198826Z Considered treating "Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL" as a file name, but it didn't exist.
2016-10-13T03:30:45.7748834Z 2>C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets(40,3): error MSB4062: The "Xamarin.Forms.Build.Tasks.FixedCreateCSharpManifestResourceName" task could not be loaded from the assembly C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Build.Tasks.dll. Could not load file or assembly 'file:///C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Build.Tasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [C:\a\s\DentalLife\DentalLife\DentalLife\DentalLife.csproj]
2016-10-13T03:30:45.7778918Z 2>Done Building Project "C:\a\s\DentalLife\DentalLife\DentalLife\DentalLife.csproj" (default targets) -- FAILED.
2016-10-13T03:30:45.7808866Z 1>Done Building Project "C:\a\s\DentalLife\DentalLife\DentalLife.Droid\DentalLife.Droid.csproj" (clean;PackageForAndroid target(s)) -- FAILED.
2016-10-13T03:30:45.8018852Z
2016-10-13T03:30:45.8018852Z Build FAILED.
之后,几天试图查找任何信息,我发现了以下 Whosebug links:
基本上,在那些 post 中,他们提到这可能是一个与安全相关的问题。
我尝试遵循所有建议,从更改权限到更改一些参数,如构建作业授权范围。但到目前为止运气好:-(
更新 2
经过多次尝试并在 Internet 上查找后,我发现问题是托管代理的 Xamarin.Froms 版本不同。然后我发现这个 post http://www.blogaboutxamarin.com/xamarin-devops-with-vsts-setup-a-cross-platform-build-agent-on-windows/ 我在其中创建了一个本地代理并且 Xamarin.Forms 版本更新为 6.1.1。之后我就可以用绿色排队构建 ALL :-)
但是,我决定在我的解决方案中将 Xamarin.Forms 版本升级为 2.3.1.114,因为我需要使用该版本中可用的 class。在本地,它构建并且 运行 OK。
现在,问题又出在 VSTS 中的代理构建上。这次向我展示了一个不同的错误。还有一些找不到的dll:
obj\Release\android\src\mono\android\support\v7\internal\widget\ActivityChooserModel_OnChooseActivityListenerImplementor.java:8: error: package android.support.v7.internal.widget.ActivityChooserModel does not exist
obj\Release\android\src\mono\android\support\v7\internal\widget\ActivityChooserModel_OnChooseActivityListenerImplementor.java:33: error: package android.support.v7.internal.widget does not exist
2016-10-17T02:26:08.1053649Z private native boolean n_onChooseActivity (android.support.v7.internal.widget.ActivityChooserModel p0, android.content.Intent p1);
在我的 Android 项目中,我有:
最后,这是 GitHub 存储库的 link,您可以在其中找到代码:
https://github.com/Lesthad/CIXamarinShowTest
如有任何帮助,我们将不胜感激。感谢和抱歉这么长 post :-(
解决方案是您需要在构建定义的 Xamarin.Android 步骤中指定 JDK 版本。
我开始为 Xamarin Android 应用程序使用来自 Team Services 的构建定义。在 Visual Studio 中一切正常,我可以将代码签入 VS Team Services。
更新 1
现在,在为我的项目创建构建定义的那一刻,它正在下降。
这是日志的一部分:
2016-10-13T03:30:45.7198826Z Considered treating "Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL" as a file name, but it didn't exist.
2016-10-13T03:30:45.7748834Z 2>C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets(40,3): error MSB4062: The "Xamarin.Forms.Build.Tasks.FixedCreateCSharpManifestResourceName" task could not be loaded from the assembly C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Build.Tasks.dll. Could not load file or assembly 'file:///C:\a\s\DentalLife\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Build.Tasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [C:\a\s\DentalLife\DentalLife\DentalLife\DentalLife.csproj]
2016-10-13T03:30:45.7778918Z 2>Done Building Project "C:\a\s\DentalLife\DentalLife\DentalLife\DentalLife.csproj" (default targets) -- FAILED.
2016-10-13T03:30:45.7808866Z 1>Done Building Project "C:\a\s\DentalLife\DentalLife\DentalLife.Droid\DentalLife.Droid.csproj" (clean;PackageForAndroid target(s)) -- FAILED.
2016-10-13T03:30:45.8018852Z
2016-10-13T03:30:45.8018852Z Build FAILED.
之后,几天试图查找任何信息,我发现了以下 Whosebug links:
基本上,在那些 post 中,他们提到这可能是一个与安全相关的问题。
我尝试遵循所有建议,从更改权限到更改一些参数,如构建作业授权范围。但到目前为止运气好:-(
更新 2
经过多次尝试并在 Internet 上查找后,我发现问题是托管代理的 Xamarin.Froms 版本不同。然后我发现这个 post http://www.blogaboutxamarin.com/xamarin-devops-with-vsts-setup-a-cross-platform-build-agent-on-windows/ 我在其中创建了一个本地代理并且 Xamarin.Forms 版本更新为 6.1.1。之后我就可以用绿色排队构建 ALL :-)
但是,我决定在我的解决方案中将 Xamarin.Forms 版本升级为 2.3.1.114,因为我需要使用该版本中可用的 class。在本地,它构建并且 运行 OK。
现在,问题又出在 VSTS 中的代理构建上。这次向我展示了一个不同的错误。还有一些找不到的dll:
obj\Release\android\src\mono\android\support\v7\internal\widget\ActivityChooserModel_OnChooseActivityListenerImplementor.java:8: error: package android.support.v7.internal.widget.ActivityChooserModel does not exist obj\Release\android\src\mono\android\support\v7\internal\widget\ActivityChooserModel_OnChooseActivityListenerImplementor.java:33: error: package android.support.v7.internal.widget does not exist 2016-10-17T02:26:08.1053649Z private native boolean n_onChooseActivity (android.support.v7.internal.widget.ActivityChooserModel p0, android.content.Intent p1);
在我的 Android 项目中,我有:
最后,这是 GitHub 存储库的 link,您可以在其中找到代码: https://github.com/Lesthad/CIXamarinShowTest
如有任何帮助,我们将不胜感激。感谢和抱歉这么长 post :-(
解决方案是您需要在构建定义的 Xamarin.Android 步骤中指定 JDK 版本。