首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有人用gitlab成功地构建了Xamarin.Forms吗?

有人用gitlab成功地构建了Xamarin.Forms吗?
EN

Stack Overflow用户
提问于 2017-03-13 05:24:16
回答 2查看 3.6K关注 0票数 15

我正在用Xamarin.Forms做一个宠物项目,我想知道是否有人有过配置gitlab-ci.yml构建成功的经验。一般情况下,关于.NET构建的配置材料似乎有限,在将两个构建连接在一起之前,我尝试成功地构建一个。尝试了构建路径的每个项目的.csproj。

如有任何见解和经验,将不胜感激。

当前..gitlab ci.yml

代码语言:javascript
复制
image: mono

variables:
   Solution: Solution.sln

stages:
  - build
  - test
  - deploy

before_script:
  - nuget restore $Solution

build:
  stage: build
  script:
    - MONO_IOMAP=case xbuild /p:Configuration="Release" /p:Platform="iPhone" /t:Build $Solution
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-03 16:10:57

是的,我们让它完美地工作,而不需要使用靴子或AzureDevops。正如@AkashKava所提到的,我必须让它在Mac /runner上运行,我使用AppCenter的CLI命令作为发行版的一部分,在这里我还存储了自己的证书、密钥存储和配置配置文件。

因此,在运行所有程序之前,请确保还原nuget包并安装必要的库nugetmsbuildappcenter、.:

代码语言:javascript
复制
before_script:
  - nuget restore

然后,为了创建一个Android QA apk文件:

代码语言:javascript
复制
android_dev_apk:
  stage: build
  dependencies: []
  tags:
    - xamarin
  script:
    - msbuild {AppName}.sln $BUILD_VERBOSITY /t:Clean /p:Configuration=Dev
    - msbuild {AppName}.sln $BUILD_VERBOSITY /t:Build /p:Configuration=Dev
    - msbuild {AppName}.Android/{AppName}.Android.csproj $BUILD_VERBOSITY /t:PackageForAndroid /t:SignAndroidPackage /p:Configuration=Dev /p:AndroidKeyStore=True

只需将{AppName}替换为应用程序的文件夹名/应用程序名,这在我的情况下是一样的。同样适用于iOS

代码语言:javascript
复制
ios_qa_app:
  stage: build
  dependencies: []
  tags:
   - xamarin
  script:
   - rm -rf {AppName}.iOS/bin/iPhone/QA
   - msbuild {AppName}.sln $BUILD_VERBOSITY /t:Clean /p:Platform=iPhone /p:Configuration=QA
   - msbuild {AppName}.sln $BUILD_VERBOSITY /t:Build /p:Platform=iPhone /p:ArchiveOnBuild=true /p:Configuration=QA
  artifacts:
    paths:
     - {AppName}.iOS/bin/iPhone/QA/{AppName}.ipa
     - {AppName}.iOS/bin/iPhone/QA/{AppName}.app.dSYM
    expire_in: 10 day
    when: on_success
  only:
    - schedules
  except:
    variables:
      - $ProdBuild == "true"

请注意,在script下,一切都与使用终端时一样,所以您也可以键入类似ls之类的内容,以便在输出日志中打印该文件夹中的文件列表,或者键入cd ..cd DirectoryName以更改文件夹。

因此,要分发Android工件,将其添加到Android脚本中:

代码语言:javascript
复制
    - appcenter distribute release --app {CompanyInAppCenter}/{AndroidAppNameInAppCenter} --group "Collaborators" --file {AppName}.Android/bin/QA/{BundleIdentifier}-Signed.apk --token=${APPCENTER_API_TOKEN}

最后,要分发iOS工件,请将其添加到iOS脚本中:

代码语言:javascript
复制
    - appcenter distribute release --app {CompanyInAppCenter}/{iOSAppNameInAppCenter} --group "Collaborators" --file {AppName}.iOS/bin/iPhone/QA/{AppName}.ipa --token=${APPCENTER_API_TOKEN}

PS:我写了一篇关于如何在不使用自己的构建代理的情况下做一些使用GitHub操作的文章。

票数 5
EN

Stack Overflow用户

发布于 2019-08-22 09:29:07

还没有,不幸的是,您将需要一台windows机器,先决条件:

  • Windows
    • 是的!.NET框架只在Windows中工作,所以您将要使用的机器需要使用Windows。

  • Git
    • 你觉得我们需要安装Git吗?好吧,这是个笑话,很明显我们需要git,顺便说一句我们要使用GitLab!

  • MSBuild
    • 为了能够构建和发布我们的应用程序,我们需要安装MSBuild。

您可以在新的这里表单所依赖的.Net上构建更多的信息。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42757115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档