簡體   English   中英

將Visual Studio解決方案的構建順序輸出到文本文件

[英]Output Build Order of Visual Studio solution to a text file

有沒有辦法通過命令行將構建命令輸出到文本文件?

解釋:我們使用多個源分支,每個分支上都有100多個項目的大型解決方案。 我需要編寫構建腳本以從命令行構建這些解決方案。 然后,我們可以在分支機構上定制解決方案,以僅獲取團隊正在從事的項目的項目參考。 我希望這會大大增加解決方案的加載時間,並減輕開發人員和我的挫敗感,我希望:)

我將繼續尋找,也許會使用VS提供的C#和API。 我們正在使用2012更新1。

這是Visual Studio插件項目的理想選擇。

  1. 創建一個新的Visual Studio外接程序項目。
  2. 確保在項目創建向導中,在“ 選擇加載項選項”步驟中選擇以下配置(其他步驟並不重要,我假設您將使用C#):

在此處輸入圖片說明

  1. Connect.cs文件中,添加以下字段:

     private BuildEvents _buildEvents; private Events _events; private bool buildEventConnected = false; 
  2. 並相應地添加/修改這些方法:

     public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; _events = _applicationObject.Events; _buildEvents = _events.BuildEvents; if (connectMode != ext_ConnectMode.ext_cm_UISetup && !buildEventConnected) { _buildEvents.OnBuildDone += new _dispBuildEvents_OnBuildDoneEventHandler(BuildEvents_OnBuildDone); buildEventConnected = true; } } private void BuildEvents_OnBuildDone(vsBuildScope Scope, vsBuildAction Action) { const string BUILD_OUTPUT_PANE_GUID = "{1BD8A850-02D1-11D1-BEE7-00A0C913D1F8}"; TextDocument txtOutput = default(TextDocument); TextSelection txtSelection = default(TextSelection); Window vsWindow = default(Window); vsWindow = _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput); OutputWindow vsOutputWindow = default(OutputWindow); OutputWindowPane objBuildOutputWindowPane = default(OutputWindowPane); vsOutputWindow = (OutputWindow)vsWindow.Object; foreach (OutputWindowPane objOutputWindowPane in vsOutputWindow.OutputWindowPanes) { if (objOutputWindowPane.Guid.ToUpper() == BUILD_OUTPUT_PANE_GUID) { objBuildOutputWindowPane = objOutputWindowPane; break; } } txtOutput = objBuildOutputWindowPane.TextDocument; txtSelection = txtOutput.Selection; txtSelection.StartOfDocument(false); txtSelection.EndOfDocument(true); objBuildOutputWindowPane.OutputString(System.DateTime.Now.ToString()); txtSelection = txtOutput.Selection; var solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName); System.IO.File.WriteAllText(solutionDir + "\\\\build_output.log", txtSelection.Text); } public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) { if (buildEventConnected) { _buildEvents.OnBuildDone -= new _dispBuildEvents_OnBuildDoneEventHandler(BuildEvents_OnBuildDone); buildEventConnected = false; } } 

就這樣,在每個構建中,您都將輸出發送到解決方案文件夾中的build_output.log文件。

快速的方法是執行“清理解決方案”,以便您可以在構建日志中看到倒序的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM