簡介
如果用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伺服器