简介
如果用cd命令去了MsBuild.exe的安装目录,再找到源代码签出的目录就有难度了。
暂时解决方案如下:
variables:
MSBUILD_PATH: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin" # 我的Msbuild.exe是在这个文件夹
DAIV_OA_WEB_OUTPUT_DIR: /gitlab-runner/output/Daiv_oa/$CI_PIPELINE_ID
BUILD_PATH: "X:\\gitlab-runner\\builds\\01\\x4Rcy3k1z\\0\\study\\daiv_oa\\" # 这里暂时是取巧了。“x4Rcy3k1z”这种参数也许能在Gitlab Runner的变量中获取?
build-job:
stage: build
tags:
- zhongfang-windows
script:
- echo "Compiling the code..."
- echo $DAIV_OA_WEB_OUTPUT_DIR
- echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
- echo $MSBUILD_PATH
- cd $MSBUILD_PATH
- .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
- echo "Compile complete."
作业日支如下:
$ echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\\Daiv_OA.Web.csproj
$ echo $MSBUILD_PATH
C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin
$ cd $MSBUILD_PATH
$ .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
适用于 .NET Framework MSBuild 版本 17.9.8+b34f75857
生成启动时间为 2024/4/14 0:44:01。
节点 1 上的项目“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj”(默认目标)。
PrepareForBuild:
正在创建目录“bin\”。
正在创建目录“obj\Debug\”。
项目“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj”(1)正在节点 1 上生成“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.BLL\Daiv_OA.BLL.csproj”(2:2) (默认目标)。
……………………省略……………………
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\TastCheck.aspx.designer.cs(166,27): error CS0400: 未能在全局命名空间中找到类型或命名空间名“Sisans”(是否缺少程序集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\My_Summarize_List.aspx.designer.cs(40,27): error CS0400: 未能在全局命名空间中找到类型或命名空间名“Wuqi”(是否缺少程序集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Task_Add.aspx.designer.cs(112,27): error CS0400: 未能在全局命名空间中找到类型或命名空间名“Telerik”(是否缺少程序集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Task_Add.aspx.designer.cs(121,27): error CS0400: 未能在全局命名空间中找到类型或命名空间名“Telerik”(是否缺少程序集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Summarize_List.aspx.designer.cs(76,27): error CS0400: 未能在全局命名空间中找到类型或命名空间名“Wuqi”(是否缺少程序集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
140 个警告
35 个错误
已用时间 00:00:01.93
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit status 1
问题很明显:就是确守一些第三方组件的dll。
MsBuild使用ReferencePath
build-job: # This job runs in the build stage, which runs first.
stage: build
tags:
- zhongfang-windows
script:
- echo "Compiling the code..."
- echo $DAIV_OA_WEB_OUTPUT_DIR
- echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
- echo $MSBUILD_PATH
- cd $MSBUILD_PATH
- .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:ReferencePath=X:\study\ErpFiles /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
- echo "Compile complete."
网站终于在被Gitlab Runner在Windows上打包成功了:
下一篇:把打包好的网站传输到远程Windows服务器
黑夜里不停折腾的代码行者。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步