所以我正在尝试自动化Xamarin项目的构建并将其集成到我们公司的CI管道中。我对.NET / Xamarin构建过程并不熟悉,但我在遵循really short guide for CI they have之前已经完成了。
我正在使用一个独立的macOS构建服务器(因为我们必须使用XCode构建iOS .ipa
)和Visual Studio。
事实证明,这次,我们有一个本地依赖项(我们需要稍微修改一些library)作为项目上的git-submodule集成。开发人员都在使用IDE,它加载/卸载并解决所有依赖项而没有问题(或者至少他们告诉我):他们只需点击“播放”按钮就可以构建所有内容。
我正在尝试以编程方式找到相同的方法(在CI服务器上使用msbuild
)以及问题开始的地方:到目前为止,每次运行
$ nuget restore projectApp.sln
[...] # first get the project packages
$ msbuild \
/p:Configuration="Debug" \
/p:Platform="iPhone" \
/p:BuildIpa=true \
/p:IpaPackageDir="./Builds" \
/t:Build project.sln
...我得到〜250 "are you missing an assembly reference?"
个错误。我认为这意味着找不到库依赖项,所以我尝试使用nuget
解析它们:
$ nuget restore TK.CustomMap/TK.CustomMap.sln
[...]
但再次运行msbuild
会返回完全相同的输出:
[...]
Project "/Users/builder/project/projectApp.sln" (1) is building "/Users/builder/project/projectApp/projectApp.csproj" (2) on node 1 (default targets).
Project "/Users/builder/project/projectApp/projectApp.csproj" (2) is building "/Users/builder/project/TK.CustomMap/TK.CustomMap/TK.CustomMap/TK.CustomMap.csproj" (3:2) on node 1 (default targets).
CoreCompile:
[...]
"/Users/builder/project/projectApp.sln" (Build target) (1) ->
"/Users/builder/project/projectApp/projectApp.csproj" (default target) (2) ->
"/Users/builder/project/TK.CustomMap/TK.CustomMap/TK.CustomMap/TK.CustomMap.csproj" (default target) (3:2) ->
(CoreCompile target) ->
Api/Google/GmsDirection/GmsDirection.cs(2,18): error CS0234: The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?) [/Users/builder/project/TK.CustomMap/TK.CustomMap/TK.CustomMap/TK.CustomMap.csproj]
Api/Google/GmsDirection/GmsDirection.cs(5,7): error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?) [/Users/builder/project/TK.CustomMap/TK.CustomMap/TK.CustomMap/TK.CustomMap.csproj]
首先,我想知道是否有一种方法可以在不同的内部管道上构建库fork并使用nuget在项目中处理它(就像我使用原始版本一样)。 / p>
然后,如果太多 over-engineering ,如何在本地正确构建整个项目(包括库)并将它们全部链接在一起。