我在Visual Studio for Mac中创建了一个全新的Xamarin Forms App项目,并将其添加到GitLab存储库中。之后,我创建了一个.gitlab-ci.yml文件来设置CI构建。但问题是我收到错误消息:
error MSB4019: The imported project "/usr/lib/mono/xbuild/Xamarin/iOS/Xamarin.iOS.CSharp.targets" was not found. Confirm that the expression in the Import declaration "/usr/lib/mono/xbuild/Xamarin/iOS/Xamarin.iOS.CSharp.targets" is correct, and that the file exists on disk.
Xamarin. Android. Csharp. targets也会弹出此错误。
我的YML文件看起来像这样:
image: mono:latest
stages:
- build
build:
stage: build
before_script:
- msbuild -version
- 'echo BUILDING'
- 'echo NuGet Restore'
- nuget restore 'XamarinFormsTestApp.sln'
script:
- 'echo Cleaning'
- MONO_IOMAP=case msbuild 'XamarinFormsTestApp.sln' $BUILD_VERBOSITY /t:Clean /p:Configuration=Debug
如有帮助将不胜感激;)
2条答案
按热度按时间brqmpdu11#
你将需要一个Mac OS主机来构建Xamarin.iOS应用程序和AFAIK,它还没有在GitLab中。你可以找到discussion here和private beta here。现在,我建议你去你自己的MacOS主机和注册的GitLab运行器:
https://docs.gitlab.com/runner/
你可以在你想要的地方(虚拟机或物理设备)设置主机,并在那里安装GitLab运行器和Xamarin环境,标记它并与GitLab管道一起使用,就像任何其他共享运行器一样。
ax6ht2ek2#
从您的问题的评论来看,Xamarin似乎在
mono:latest
镜像中不可用,但这没关系,因为您可以创建自己的Docker镜像以在Gitlab CI中使用。您需要访问注册表,但如果您使用gitlab.com(而不是自托管示例),则注册表将为所有用户启用。您可以在文档中找到更多信息:https://docs.gitlab.com/ee/user/packages/container_registry/如果您使用的是自托管,注册表仍然可用(即使是免费版本),但必须由管理员启用(文档在这里:https://docs.gitlab.com/ee/administration/packages/container_registry.html)。
另一种选择是使用Docker自己的注册表Docker Hub。使用什么注册表并不重要,但您必须访问其中一个,以便您的跑步者可以拉下您的图像。如果您使用的是共享跑步者,则尤其如此。(或你的管理员)不能直接控制。如果你能直接控制你的跑步者,另一种选择是在所有需要它的跑步者上构建docker镜像。
我不熟悉Xamarin,但以下是如何基于
mono:latest
创建新的Docker镜像:一旦你的Dockerfile写好了,你可以像这样构建它:
如果你在跑步者身上建立了图像,你可以立即使用它,比如:
否则,您现在可以将其推送到您想要使用的任何注册表。