MSBuild 命令的簡單使用

MSBuild?命令的簡單使用

獨立觀察員 2022 年 7 月 7 日

d1c79d8b717444500f5b184f2979c25e.png

位置

在?VS?安裝目錄下,如:D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin

7f60cddaf818705008bf83daefb2209a.png

命令

MSBuild 命令行參考 - MSBuild | Microsoft Docs(https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2022)

使用 MSBuild.exe 生成項目或解決方案文件時,可以包含幾個開關來指定過程的各個方面。

每個開關都有兩種形式:-switch 和 /switch。本文檔僅介紹 -switch 形式。開關不區分大小寫。如果從 Windows 命令提示符之外的 shell 運行 MSBuild,則開關的參數列表(用分號或逗號分隔)可能需要單引號或雙引號,以確保將列表傳遞到 MSBuild,而不是由 shell 解釋。

語法

MSBuild.exe?[Switches]?[ProjectFile]

參數

參數描述
ProjectFile在指定項目文件中生成目標。如果不指定項目文件,則 MSBuild 會在當前工作目錄中搜索以 “proj” 結尾的文件擴展名并使用該文件。還可以為此參數指定 Visual Studio 解決方案文件。

開關

略(見原文)

示例

MSBuild.exe MyProject.proj -t:rebuild

問題

1、VS?中的生成前事件中參數未被識別的問題

項目中有如下生成事件,其中使用了?$(SolutionDir) 參數:

d3373d5d34f1cf66b3ff779faee94fe9.png

在使用 Jenkins 的 MSBuild 插件進行編譯項目時發現該命令不能被識別:

8c8ca260a7b03f0151e1cab039594981.png

參考《[使用 MSBuild Tools 調用 csproj 項目文件發布網站時 $(SolutionDir) 宏參數值丟失為空的解決方案](https://www.cnblogs.com/VAllen/p/how-to-get-rid-of-solutiondir-when-building-vs-project-from-outside-visual.html)》可知,可以使用 -p 開關來指定參數的值,如下:

MSBuild D:JenkinsDataworkspaceSrcdesktop.sln -p:SolutionDir=D:JenkinsDataworkspaceSrc

-p 和 /p 應該是等價的。官網介紹如下:

ac44f4e3ef7bb128e12dfff9ecea7854.png

2、阻止輸出警告信息

使用如下命令:

msbuild /p:WarningLevel=0

關于警告等級:

0?關閉所有的警告。

1?僅顯示嚴重警告。

2?顯示 1 級的警告以及某些不太嚴重的警告,例如有關隱藏類成員的警告。

3?顯示級別 2 警告以及某些不太嚴重的警告,例如關于始終評估為?true?或?false?的表達式的警告。

4?默認值?顯示所有 3 級警告和普通信息警告。

參考:《[在 MSBuild 編譯項目時阻止輸出所有的警告信息](https://blog.csdn.net/WPwalter/article/details/88796146/)

示例

使用 MSBuild 命令編譯項目(: 注釋的代碼部分為?devenv?方式編譯),各部分解釋看腳本中的中文注釋:

rem v20220705
ECHO OFF: 以管理員身份運行
echo SetAdmin...
@echo off
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
"%temp%getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%getadmin.vbs" ( del "%temp%getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
echo SetAdmin Done.: 殺死進程
taskkill /F /IM Main.Gui.exe: 設置相關變量
set bg_dir=E:Buildexe
set src_dir=%~pd0Src
:Jenkins 工作空間路徑為 % WORKSPACE%
:set src_dir=%WORKSPACE%Src
set desktop_dir=%src_dir%desktop: 設置編譯的環境變量
:set PATH="D:Microsoft Visual Studio2022EnterpriseCommon7IDE";%PATH%
set PATH="D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin";%PATH%: 執行編譯
ECHO ***************************************** Build desktop *****************************************
:devenv %desktop_dir%desktop.sln /rebuild DEBUG
:devenv %desktop_dir%desktop.sln /build DEBUG /project %desktop_dir%UIMain.Gui.csproj
MSBuild %desktop_dir%UIMain.Gui.csproj -p:WarningLevel=0;SolutionDir=%desktop_dir%
ECHO ================================================desktop Done===========================================================
ECHO .
ECHO .: 拷貝文件
ECHO Copy desktop
xcopy /Y /E /Q /I /exclude:%src_dir%exclude.txt %desktop_dir%Build %bg_dir%desktop: 調用 Advanced Installer 打包
D:
cd D:Advanced Installer16.7binx86
advinst.exe /rebuild "E:BuildddPCR.aip"pause

其中存放忽略規則的文件 exclude.txt 的內容為:

logs
.gitignore
.xml
.pdb
data

感謝閱讀!

C#

C#10 新特性 [調用方參數表達式] 解決了我七年前的困惑

【分享】C#?字節幫助類 ByteHelper

C# 在自定義的控制臺輸出重定向類中整合調用方信息

C#?枚舉轉列表

.NET

Windows 服務 同時啟動多個服務

PostSharp 中 AOP 功能的簡單使用

.NET SDK-Style 項目(Core、Standard、.NET5)中的版本號

將?.NET?Framework?項目轉換為 .NET?Standard?項目

ASP.NET Core MVC 網站學習筆記

Unity 容器簡單使用方法

Unity容器依賴注入之屬性注入使用備忘

添加服務引用來使用WebService

其它

在 Windows 上搭建配置 Jenkins 然后編譯打包 VS 項目

在香蕉派的樹莓派系統上配置 Syncthing 自啟動(暨 Linux 軟件自啟服務配置)

使用?GB28181.Solution?+?ZLMediaKit?+?MediaServerUI?進行攝像頭推流和播放

如何快速剝火腿腸皮?

使用 Floccus 插件和堅果云同步?Chrome?類瀏覽器書簽

Docker Hub?使用初探

『獨立觀察員』個人觀影 Ⅱ

VisualStudio?使用?DialogPage?存儲配置信息

分頁SQL語句

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284988.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS實驗教程——實驗四十:ArcGIS洪水淹沒分析案例教程

文章目錄 一、洪水淹沒效果動畫演示二、實驗數據三、實驗過程1. 加載數據2. 符號化3. 夸大處理4. 動畫制作5. 動畫播放6. 導出動畫基于數字高程模型 ( DEM )格網模型,實現給定水深情況下洪水淹沒區的計算模型,討論洪水淹沒演進過程可視化實現的關鍵技術,以三維可視化方式,動…

數據庫顯示日期時僅僅顯示“年-月-日”的問題

日期時間實際上存放的是年-月-日 時:分:秒,但是僅僅顯示了年-月-日,未顯示時分秒信息。解決方法:工具-首選項-數據庫》NLS日期格式:YYYY-MM-DD HH24:MI:SS,保存后重新查詢。轉載于:https://blog…

C語言試題185之編寫calloc函數,函數內部使用malloc函數來獲取內存

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 編寫ca…

iOS11、iPhone X 適配簡單,但你的Apple思維適配做好了么?

2017.10.23 iPhone X 的劉海為什么這么丑? 如果喬布斯在的話就一定不會允許這樣的產品交付給用戶么? 作為 iOS 開發人員該對 Apple 有怎樣的認識? Apple 未來的發展的大方向是什么? 倘若沒有 Apple 的存在,我想各位現在…

【ArcGIS遇上Python】ArcGIS Python按照指定字段批量篩選不同類型的圖斑(以土地利用數據為例)

基于土地利用數據,根據用地類型名稱,批量篩選出不同類型的用地,生成不同類型的shp數據,以類型名稱命名。 文章目錄 1. 土地利用原始數據2. 根據名稱批量篩選結果3. ArcGIS Python批處理代碼ArcGIS Python根據字段屬性批量篩選生成shp圖層 1. 土地利用原始數據 2. 根據名稱批…

使用 StringZipper 壓縮、解壓字符串

數據壓縮是一個軟件開發中的常見需求:很多時候需要先將較大的數據進行壓縮然后再通過網絡等進行傳輸。在 .NET 中,有多個壓縮算法供我們選擇:Deflate、GZip 和 Br 。這些壓縮算法都是基于流(Stream)的,在對…

【轉載】【面試題】你是一個測試工程師,如何保證軟件質量?

2019獨角獸企業重金招聘Python工程師標準>>> *參*答*案:質量是有層次(內部質量,外部質量,使用質量,過程質量) 內部質量:主要指代碼的質量,就需要引入開發工程師進…

C語言試題186之讀取范圍在1和標準輸入讀取的size之前每個數據出現的次數

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 讀取范…

[轉]常見的用戶密碼加密方式以及破解方法

【作者】張輝,就職于攜程技術中心信息安全部,負責安全產品的設計與研發。 作為互聯網公司的信息安全從業人員經常要處理撞庫掃號事件,產生撞庫掃號的根本原因是一些企業發生了信息泄露事件,且這些泄露數據未加密或者加密方式比較弱…

H5學習筆記

什么是 HTML? HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Language)HTML 不是一種編程語言,而是一種標記語言 (markup language)標記語言是一套標記標簽 (markup tag)HTML 使用標記標簽來描述網頁關鍵字&#xff1a…

【ArcGIS遇上Python】ArcGIS Python獲取某個字段的唯一值(獲取指定字段的不同屬性值)

以土地利用數據為例,DLMC字段為每個圖斑的用地類型,怎樣用Python代碼獲取該字段的屬性唯一值? Python代碼實現結果: Python源代碼: import arcpy from arcpy import env arcpy.gp.overwriteOutput=

一張圖解決Android Studio 項目運行按鈕灰色

轉載于:https://juejin.im/post/5a31ee46f265da430406a166

java學習筆記8--接口總結

生活中的接口&#xff1a; 什么是接口? 一個Java接口是一些方法特征的集合&#xff0c;但沒有方法的實現。 在類中實現接口可以使用關鍵字implements&#xff0c;其基本格式如下&#xff1a; [修飾符] class <類名> [extends 父類名] [implements 接口列表]{}修飾符&…

.NET自定義認證雖然簡單,但好用

前言有這樣一種場景&#xff0c;就是新項目已經集成了認證中心&#xff0c;或者是都用了統一的認證方式(比如現在常用的JWT)&#xff0c;這樣對于項目之間的對接就顯得比較方便&#xff0c;至少在認證這塊還是能減少一些工作量的。但當上線的老項目需要對接新項目時&#xff0c…

C語言試題187之實現strspn函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現st…

一張圖對比騰訊、阿里、百度的薪資職級

作為中國互聯網三大巨頭的騰訊、阿里、百度&#xff0c;他們的職級薪資福利等等等一直都是個謎&#xff0c;不為外界所知。今天&#xff0c;我就來為大家全面揭曉—— Here we go&#xff5e; 公司總部 - 騰訊&#xff1a;總部在深圳南山科技園&#xff0c;CBD地段&#xff1…

旺財速啃H5框架之Bootstrap(五)

在上一篇<<旺財速啃H5框架之Bootstrap&#xff08;四&#xff09;>>做了基本的框架&#xff0c;<<旺財速啃H5框架之Bootstrap&#xff08;二&#xff09;>>篇里也大體認識了bootstrap.css樣式&#xff0c;下面我們來學習常見的CSS操控內容篇幅。。。。…

【專升本計算機】最新甘肅省專升本考試C語言部分復習題帶答案

最新甘肅省專升本考試C語言部分復習題帶答案 考點1.1-1.2 1、 C 語言源程序文件經過 C 編譯器編譯之后生成一個后綴為( )的文件 A. .c B. .obj C. .exe D. .bas 2、 C 語言源程序文件經過 C 編譯器連接之后生成一個后綴為( )的文件 A. .c B. .obj C. .exe D. .bas 3、完成 …

浮點數一些設計原理

摘要&#xff1a;本篇文章會講述浮點數的設計原理&#xff0c;比如如何存儲二進制的問題&#xff0c;從而幫助我們更好的編碼。 __1. deading code __ console.log(1.0-0.9 0.1); //輸出 false console.log(1.0-0.9, 0.1); //輸出 0.09999999999999998 0.1 //所以判斷浮點運算…

Atitit. http 代理原理 ?atiHttpProxy ?大木馬

Atitit. http 代理原理 atiHttpProxy 大木馬 1. 面這張圖可以清晰地闡明HttpProxy的實現原理&#xff1a;1 2. 代理服務器用途1 3. 其中流程具體如下&#xff1a;2 4. 設計規劃3 5. 結束語4 1. 面這張圖可以清晰地闡明HttpProxy的實現原理&#xff1a; 2. 代理服務器用途 代…