国产欧美日韩三区_偷窥自拍亚洲色图精选_久久大片网站_成人在线黄色_成人亚洲免费视频_99久久久精品_国产美女自拍_韩国19禁主播vip福利视频_色综合视频一区二区三区日韩_日本在线观看一区二区

當前位置:首頁 > 科技  > 軟件

不容錯過的MSBuild技巧,必備用法詳解和實踐指南

來源: 責編: 時間:2023-08-05 11:44:54 4970觀看
導讀一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用。MSBuild使用XML文件格式來指定項目的編譯

GJg28資訊網——每日最新資訊28at.com

一、MSBuild簡介

MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用。GJg28資訊網——每日最新資訊28at.com

MSBuild使用XML文件格式來指定項目的編譯、測試和部署等各個階段的任務。這些XML文件通常以.csproj文件的形式存儲。每個項目文件都包含一個或多個 PropertyGroup 元素和一個或多個 ItemGroup 元素。 PropertyGroup 元素聲明和定義屬性,例如目標框架、輸出路徑和程序集名稱等。 ItemGroup 元素創建項,例如NuGet包引用、文件和資源等。GJg28資訊網——每日最新資訊28at.com

可以使用 dotnet build 命令或 msbuild 命令來運行MSBuild,它會自動查找與當前目錄相關聯的項目并執行構建過程。你還可以使用/t選項指定一個或多個目標,例如Clean、Build和Publish。GJg28資訊網——每日最新資訊28at.com

MSBuild支持條件和屬性組合,可以為不同的目標平臺自定義構建過程。還可以使用自定義任務,例如運行代碼靜態分析器或壓縮構建輸出文件等。GJg28資訊網——每日最新資訊28at.com

二、MSBuild應用場景

MSBuild可以用于多種場景,包括:GJg28資訊網——每日最新資訊28at.com

  • 編譯源代碼 MSBuild可以編譯應用程序中的源代碼文件,將它們編譯成二進制文件,以便在部署時使用。它支持多種編譯選項,例如優化、生成調試信息和設置警告等級等。
  • 處理配置文件和資源文件 MSBuild還可以處理應用程序的配置文件和資源文件,例如App.config和Resources.resx文件。它可以將這些文件復制到應用程序目錄中,并將其包含在最終編譯的二進制文件中。
  • 安裝和注冊組件 如果應用程序依賴于其他組件或庫,MSBuild可以自動安裝和注冊這些組件,以確保應用程序能夠正常運行。它也可以從NuGet包管理器中下載和安裝依賴項。
  • 打包和部署應用程序 MSBuild可以將應用程序打包成zip文件或其他格式,以方便部署到其他環境中。它還可以自動部署應用程序到遠程服務器或云平臺上,例如Azure或AWS。
  • 自定義任務 除了執行預定義的任務之外,MSBuild還可以編寫自定義任務,以執行特定的構建任務。例如,你可以編寫一個任務來執行代碼靜態分析或壓縮構建輸出文件。

三、MSBuild基礎知識

以下是一些MSBuild基礎知識:GJg28資訊網——每日最新資訊28at.com

屬性

屬性是聲明和定義變量的方式。可以使用 SetProperty 元素或 PropertyGroup元素來定義屬性。例如:GJg28資訊網——每日最新資訊28at.com

<PropertyGroup>  <MyProperty>MyValue</MyProperty></PropertyGroup>

項用于表示一個或多個文件或其他資源。可以使用 ItemGroup 元素和具有Include屬性的元素來創建項。例如:GJg28資訊網——每日最新資訊28at.com

<ItemGroup>  <Compile Include="*.cs" /></ItemGroup>

任務

任務是執行構建過程中的特定操作的方式。可以使用 Task 元素和具有TaskName屬性的元素來聲明和定義任務。例如:GJg28資訊網——每日最新資訊28at.com

<TaskName Parameter1="Value1" Parameter2="Value2" />

運行構建

要在命令行上運行MSBuild,請使用以下命令:GJg28資訊網——每日最新資訊28at.com

msbuild MyProject.csproj /t:Build /p:Configuration=Debug

該命令將運行名為 "Build" 的構建目標,并使用名為 "Debug" 的配置文件來構建項目。GJg28資訊網——每日最新資訊28at.com

四、MSBuild高級用法

MSBuild還有許多高級用法,包括:GJg28資訊網——每日最新資訊28at.com

自定義屬性和條件

在項目文件中定義自定義屬性和條件,例如定義一個自定義屬性來指定構建輸出目錄:GJg28資訊網——每日最新資訊28at.com

<Project>  <PropertyGroup>    <OutputDirectory>bin/$(Configuration)/</OutputDirectory>  </PropertyGroup>  ...  <Target Name="Build">    <MakeDir Directories="$(OutputDirectory)" />    ...  </Target></Project>

此時,可以在通用屬性文件中定義屬性值,然后在不同的項目文件中包含該通用屬性文件,以便重復使用自定義屬性。GJg28資訊網——每日最新資訊28at.com

目標依賴關系

在項目文件中聲明目標之間的依賴關系,例如,在兩個目標之間添加依賴關系:GJg28資訊網——每日最新資訊28at.com

<Project>  ...  <Target Name="Build">    ...  </Target>  <Target Name="Test" DependsOnTargets="Build">    ...  </Target></Project>

這樣,MSBuild在執行 "Test" 目標時,會先執行 "Build" 目標。GJg28資訊網——每日最新資訊28at.com

自定義任務

編寫自定義任務來執行構建過程中的特定任務。例如,使用 MSBuildCommunityTasks 執行 FTP 上傳:GJg28資訊網——每日最新資訊28at.com

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <UsingTask TaskName="FTPTask" AssemblyFile="MSBuild.Community.Tasks.dll" />  <Target Name="UploadFile">    <FTPTask ServerHost="ftp.example.com"             RemoteFile="upload.txt"             LocalFile="c:/files/upload.txt"             Username="user"             Password="pass" />  </Target></Project>

這個示例中,定義了一個名為 "FTPTask" 的自定義任務,然后在 "UploadFile" 目標中調用該任務來執行 FTP 上傳。GJg28資訊網——每日最新資訊28at.com

條件表達式

使用條件表達式根據條件執行不同的任務。例如,根據平臺類型選擇不同的構建配置:GJg28資訊網——每日最新資訊28at.com

<Project>  ...  <Choose>    <When Condition="'$(Platform)' == 'x86'">      <PropertyGroup>        <DefineConstants>DEBUG;X86</DefineConstants>        ...      </PropertyGroup>    </When>    <When Condition="'$(Platform)' == 'x64'">      <PropertyGroup>        <DefineConstants>DEBUG;X64</DefineConstants>        ...      </PropertyGroup>    </When>  </Choose>  ...</Project>

此示例使用條件表達式 <Choose> 和 <When> 標記,通過判斷 $(Platform) 變量的值來選擇執行不同的 PropertyGroup。GJg28資訊網——每日最新資訊28at.com

自定義構建日志

自定義構建日志以記錄構建過程中的詳細信息。例如,將構建日志輸出到文件:GJg28資訊網——每日最新資訊28at.com

<Project>  <PropertyGroup>    <LogDirectory>logs/</LogDirectory>  </PropertyGroup>  <Target Name="Build">    <Exec Command="dotnet build MyApp.csproj" />  </Target>  <Target Name="LogBuild" AfterTargets="Build">    <Message Text="Writing build log to $(LogDirectory)/build.log" Importance="high" />    <WriteLinesToFile File="$(LogDirectory)/build.log" Lines="$([System.DateTime]::Now.ToString()) - Build succeeded." />  </Target></Project>

此示例中,定義了一個名為 "LogBuild" 的目標,并在執行 "Build" 目標之后調用該目標。在 "LogBuild" 目標中,使用 <Message> 元素將日志輸出到控制臺,使用 <WriteLinesToFile> 元素將日志寫入日志文件。GJg28資訊網——每日最新資訊28at.com

五、MSBuild最佳實踐

以下是MSBuild的一些最佳實踐及代碼示例:GJg28資訊網——每日最新資訊28at.com

使用命名屬性組,以便更好地組織和管理屬性:GJg28資訊網——每日最新資訊28at.com

<Project>  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">    <DefineConstants>DEBUG;TRACE</DefineConstants>    <Optimize>false</Optimize>    <OutputPath>bin/Debug/</OutputPath>    ...  </PropertyGroup>  ...</Project>

在這個示例中,屬性都被包含在一個名為 "Debug|AnyCPU" 的 PropertyGroup 中。這樣可以更好地組織和管理屬性,并且可以使用條件表達式來根據需要選擇不同的屬性組。GJg28資訊網——每日最新資訊28at.com

避免硬編碼文件路徑,而是使用相對路徑和通用屬性:GJg28資訊網——每日最新資訊28at.com

<Project>  <ItemGroup>    <Compile Include="src/**/*.cs" />    ...  </ItemGroup>  <PropertyGroup>    <OutputPath>bin/$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), Build.props)/)</OutputPath>  </PropertyGroup>  ...</Project>

在這個示例中,使用相對路徑 "src***.cs" 來指定需要編譯的源代碼文件,并使用通用屬性來獲取輸出路徑,以避免硬編碼路徑并提高可移植性。GJg28資訊網——每日最新資訊28at.com

使用預定義的 MSBuild 目標和任務,以便重復使用現有功能:GJg28資訊網——每日最新資訊28at.com

<Project>  ...  <Target Name="Clean">    <MSBuild Projects="$(MSBuildThisFileFullPath)"             Targets="CleanSolution"             Properties="Configuration=$(Configuration)" />  </Target>  ...</Project>

在這個示例中,使用現有的 MSBuild 目標和任務來執行 "Clean" 目標。這樣可以重復使用現有功能并提高構建效率。GJg28資訊網——每日最新資訊28at.com

使用條件表達式來支持多個版本和平臺:GJg28資訊網——每日最新資訊28at.com

<Project>  ...  <Choose>    <When Condition="'$(TargetFramework)' == 'netcoreapp3.1'">      <PropertyGroup>        <DefineConstants>NET_CORE_3_1</DefineConstants>        ...      </PropertyGroup>    </When>    <When Condition="'$(TargetFramework)' == 'net5.0'">      <PropertyGroup>        <DefineConstants>NET_5_0</DefineConstants>        ...      </PropertyGroup>    </When>  </Choose>  ...</Project>

在這個示例中,使用條件表達式根據目標框架選擇執行不同的操作。這樣可以更好地支持多個版本和平臺,并保持代碼的簡潔和易于維護。GJg28資訊網——每日最新資訊28at.com

禁用 Visual Studio 的自動格式化選項,以避免與代碼格式化工具沖突:GJg28資訊網——每日最新資訊28at.com

<Project>  ...  <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'">    <EnableEditorConfig>false</EnableEditorConfig>  </PropertyGroup>  ...</Project>

在這個示例中,使用 EnableEditorConfig 屬性來禁用 Visual Studio 的自動格式化選項,以避免與代碼格式化工具沖突。這樣可以保持代碼格式化的一致性,減少錯誤和不必要的麻煩。GJg28資訊網——每日最新資訊28at.com

參考文檔:https://learn.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-concepts?view=vs-2022。GJg28資訊網——每日最新資訊28at.com

本文鏈接:http://m.yifxia.cn/showinfo-26-94-0.html不容錯過的MSBuild技巧,必備用法詳解和實踐指南

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 分布式系統中的CAP理論,面試必問,你理解了嘛?

下一篇: 如何正確使用:Has和:Nth-Last-Child

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • K6:面向開發人員的現代負載測試工具

    K6 是一個開源負載測試工具,可以輕松編寫、運行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設計為功能強大、可擴展且易于使用。k6 可用于測試各種應用程序,包括 Web
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 使用Webdriver-manager解決瀏覽器與驅動不匹配所帶來自動化無法執行的問題

    1、前言在我們使用 Selenium 進行 UI 自動化測試時,常常會因為瀏覽器驅動與瀏覽器版本不匹配,而導致自動化測試無法執行,需要手動去下載對應的驅動版本,并替換原有的驅動,可能還
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯網品牌官01 擦邊少女空降熱搜,幕后推手曝光被網友譽為&ldquo;純欲天花板&rdquo;的女網紅井川里予,近期因為一組哥特風照片登上熱搜,引發了一場互聯網世界關于
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業務到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
Top 韩国三级香港三级日本三级| 亚洲女人国产香蕉久久精品| 在线观看成人网| a级黄色毛片免费播放视频| 欧美1区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 青青青草视频在线观看| 国产不卡在线播放| 青青久热| 成人a级高清视频在线观看| 九九九国产| 日日爽天天| 精品久久久久久中文字幕2017| 999精品视频在线| 精品在线观看一区| 国产高清视频免费观看| 超级乱淫黄漫画免费| 精品国产一区二区三区久| 四虎影视库| 九九精品在线播放| 四虎影视久久久免费| 日韩中文字幕在线亚洲一区| 国产视频一区在线| 国产网站免费观看| 欧美日本国产| 精品国产一区二区三区久| 九九免费高清在线观看视频| 欧美激情一区二区三区视频| 国产不卡在线观看| 久久精品免视看国产明星| 色综合久久天天综线观看| 91麻豆国产| 国产一区二区精品久久91| 国产视频久久久久| 亚洲 激情| 天天做日日爱| 可以在线看黄的网站| 国产美女在线观看| 黄色免费三级| 国产91精品系列在线观看| 深夜做爰性大片中文| 91麻豆精品国产自产在线观看一区 | 欧美另类videosbestsex高清| 91麻豆国产| 精品国产亚洲人成在线| 精品国产一区二区三区久久久蜜臀 | 国产网站免费视频| 九九干| 999久久66久6只有精品| 99久久精品国产高清一区二区| 日韩中文字幕在线观看视频| 久久国产精品永久免费网站| 精品国产一区二区三区久久久蜜臀| 天天色色网| 欧美另类videosbestsex久久| 精品国产一区二区三区久久久蜜臀| 91麻豆精品国产自产在线 | 亚洲不卡一区二区三区在线| 高清一级毛片一本到免费观看| 国产成人精品影视| 可以在线看黄的网站| 可以免费看污视频的网站| 国产国语对白一级毛片| a级毛片免费观看网站| 久久精品免视看国产成人2021| 精品国产一区二区三区久| 999久久66久6只有精品| 欧美激情一区二区三区在线| 国产福利免费视频| 日韩av东京社区男人的天堂| 九九九国产| 日日夜夜婷婷| 亚洲精品久久玖玖玖玖| 99久久精品国产高清一区二区| 精品视频一区二区| 青青青草影院| 999久久66久6只有精品| 九九久久国产精品| 日本特黄特色aaa大片免费| 国产亚洲免费观看| 免费国产在线视频| 精品视频在线观看免费 | 999久久66久6只有精品| 欧美大片aaaa一级毛片| 黄视频网站在线观看| 日本在线不卡免费视频一区| 亚洲 国产精品 日韩| 日韩在线观看网站| 精品久久久久久影院免费| 你懂的日韩| 日韩专区第一页| 国产不卡在线观看| 精品在线免费播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产不卡在线观看视频| 成人免费观看的视频黄页| 午夜欧美成人久久久久久| 成人免费一级毛片在线播放视频| 美女免费精品视频在线观看| 精品视频在线看| 麻豆系列 在线视频| 一级毛片视频在线观看| 可以免费看污视频的网站| 久久国产精品自由自在| 夜夜操网| 国产网站免费视频| 精品久久久久久中文字幕一区| 高清一级淫片a级中文字幕 | 国产a免费观看| 高清一级做a爱过程不卡视频| 二级特黄绝大片免费视频大片| 午夜家庭影院| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产成人女人在线视频观看| 精品国产香蕉在线播出| 精品视频在线观看一区二区三区| 免费一级片网站| 欧美一区二区三区在线观看| 国产高清在线精品一区a| 亚洲天堂在线播放| 一级片片| 999精品在线| 国产国语对白一级毛片| 成人在激情在线视频| 精品视频在线观看免费 | 国产亚洲精品aaa大片| 免费国产在线观看不卡| 国产伦精品一区二区三区无广告 | 欧美a级片免费看| 中文字幕一区二区三区 精品| 精品视频在线观看一区二区三区| 久草免费在线观看| 亚洲精品久久久中文字| 91麻豆精品国产自产在线| 精品久久久久久中文| 亚洲第一色在线| 精品在线视频播放| 成人影院久久久久久影院| 久久精品免视看国产成人2021| 日本在线不卡视频| 国产成人啪精品视频免费软件| 四虎久久影院| 黄色免费三级| 你懂的在线观看视频| 黄视频网站在线观看| 久久国产精品永久免费网站| 国产伦久视频免费观看 视频| 99久久精品国产高清一区二区| 精品久久久久久中文字幕一区| 黄视频网站在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 色综合久久天天综合绕观看| 精品国产一区二区三区久久久蜜臀 | 91麻豆精品国产综合久久久| 91麻豆国产| 亚洲 国产精品 日韩| 一级女性大黄生活片免费| 精品久久久久久中文字幕2017| 美女免费毛片| 欧美大片一区| 九九免费高清在线观看视频| 一本高清在线| 一级片免费在线观看视频| 亚洲 国产精品 日韩| 国产高清在线精品一区二区| 成人在免费观看视频国产| 欧美国产日韩精品| 超级乱淫黄漫画免费| 免费毛片播放| 精品国产一区二区三区久久久蜜臀 | 日韩字幕在线| 亚洲精品久久久中文字| 999久久66久6只有精品| 成人免费福利片在线观看| 天天做日日爱夜夜爽| 国产一区二区精品在线观看| 国产精品免费久久| 亚洲 激情| 久久国产影院| 欧美国产日韩在线| 国产高清在线精品一区二区| 国产不卡在线看| 精品在线视频播放| 国产成人精品综合在线| 欧美大片一区| 国产福利免费视频| 一本高清在线| 日韩综合| 国产极品白嫩美女在线观看看| 夜夜操网| 成人a大片在线观看| 中文字幕一区二区三区 精品| 国产不卡在线观看视频| 日韩一级黄色| 亚洲 国产精品 日韩| 精品视频在线看 | 日本免费看视频| 日本伦理网站| 国产麻豆精品免费视频| 亚洲第一页色|