日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不止命令行!自定义VS生成事件

發布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不止命令行!自定义VS生成事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在VS中打開項目屬性,選擇“生成事件”選項卡。在“生成前事件命令行”或“生成后事件命令行”文本框中可以輸入任何命令提示符或.bat文件中有效的命令:

但是,有沒有可能執行更豐富的命令呢?

生成事件的本質

上面設置的“生成事件”保存在哪?

編輯項目文件,可以看到它實際上是一個MsBuild目標,執行Exec任務:

<Target?Name="PreBuild"?BeforeTargets="PreBuildEvent"><Exec?Command="del?d:\$(TargetFileName)"?/> </Target><Target?Name="PostBuild"?AfterTargets="PostBuildEvent"><Exec?Command="copy?$(OutDir)\$(TargetFileName)???d:\$(TargetFileName)"?/> </Target>

生成前事件是在PreBuildEvent目標前運行,生成后事件是在PostBuildEvent目標后運行。

執行多任務

既然是MsBuild目標,那就不光可以執行Exec任務了。

我們可以同時執行多個MsBuild內置任務,比如將bin\Debug\net5.0目錄中的所有文件復制到d:\tmp:

<Target?Name="PostBuild"?BeforeTargets="PostBuildEvent"><Message?Text="生成后事件開始"?/><RemoveDir?Directories="d:\tmp"?/><CreateItem?Include="$(TargetDir)*.*"><Output?TaskParameter="Include"?ItemName="CopyFiles"?/></CreateItem><Copy?SourceFiles="@(CopyFiles)"DestinationFolder="d:\tmp"/><Message?Text="生成后事件結束"?/> </Target>
  • Message 記錄一條消息

  • RemoveDir 刪除指定的目錄及其所有文件和子目錄

  • CreateItem 使用輸入項目填充項目集合,這里用來生成文件列表

  • Copy 將文件復制到指定位置

更多任務詳情請查看MSBuild 任務參考[1]

可以看到執行正常:

執行C#代碼

如果現成的任務不能滿足要求,我們還可以編寫C#代碼實現任務。

當然不是編寫exe,而是使用內聯任務[2]。

比如,輸出一條錯誤日志:

<UsingTask TaskName="HelloWorld" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"?> <ParameterGroup?/> <Task><Using?Namespace="System"/><Using?Namespace="System.IO"/><Code?Type="Fragment"?Language="cs"> <![CDATA[Log.LogError("Hello,?My?IO!"); ]]></Code> </Task> </UsingTask><Target?Name="PreBuild"?BeforeTargets="PreBuildEvent"><HelloWorld?/> </Target>

結論

通過本文,你可以了解到,如何自定義VS生成事件。

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!

參考資料

[1]

MSBuild 任務參考: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-task-reference?view=vs-2019

[2]

內聯任務: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-inline-tasks?view=vs-2019

總結

以上是生活随笔為你收集整理的不止命令行!自定义VS生成事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。