2017-07-07 94 views
1

我試圖使用Visual Studio 2017構建Visual Studio項目。失敗並且錯誤列表顯示了相當一些中文字符。如何檢索構建Visual Studio項目時使用的命令行

我知道這些字符是由MSBuild命令的誤解導致的,所以我決定自己運行MSBuild命令,以便查看哪些錯誤消息導致了中文字符,並且爲了解決我的問題。因此,如「this relevant StackOverflow post」中所述,我已將Visual Studio「MSBuild項目構建輸出詳細程度」修改爲「詳細」(我甚至把它放在「診斷」)上,但雖然有相當多的信息,我無法從該輸出中檢索MSBuild命令行。正如我在評論中提到的,我的選項窗口中沒有「顯示所有設置」複選框。

所以我試着做別的事情:我打開了一個命令提示符,我去了我的Visual Studio項目的位置,在那裏我簡單地啓動了命令「\ MSBuild.exe」。然而,這並不是一個好主意:項目的構建成功,並且警告的數量(864)與預期的警告數量不相符,如Visual Studio(3)的錯誤列表所示,所以我留下了兩個問題:

  1. 我在我的電腦上有不同的MSBuild.exe文件,我怎麼知道一個Visual Studio使用哪一個 ? (爲了您的信息,當我只需啓動「的MSBuild」它沒有運行:在我$PATH環境變量沒有MSBuild的運行目錄)
  2. 我相信一些參數可以用來 同時使用Visual Studio推出的身材,我怎麼可以檢索 那些來自輸出窗口?

與此同時,我發現有一個工具,稱爲「開發人員命令提示符」。我已經打開這個工具,進入我的項目目錄並啓動了MSBuild。構建成功,沒有錯誤和零警告,所以也沒有給出預期的結果。

在此先感謝

回答

1

1.I有我的電腦上不同MSBuild.exe文件,我怎麼能知道哪一個Visual Studio中使用? (爲了您的信息,當我只需啓動「的MSBuild」它沒有運行:在我的$ PATH環境變量中沒有的MSBuild運行目錄)

您可以右鍵點擊你的項目,選擇「Unload Project」,然後右鍵單擊並選擇「Edit xx.csproj」。在項目文件的頂部,你會發現,對於Toolversion聲明:

<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

此外,你可以使用「按Ctrl + F」來搜索在輸出窗口關鍵字「MSBuild」(「MSBuild項目建立輸出冗長「爲」詳細「),你會發現更多的條目是MSBuild\15.0

,所以我們可以知道MSBuild.exe 15.0(在C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin定位)所使用的Visual Studio 2017年

2.我相信某些參數同時使用Visual Studio推出的構建中使用,如何我可以從輸出窗口中檢索那些嗎?

是的,使用Visual Studio啓動構建時會使用一些參數,例如配置:Dubug/Release;禮貌:Target Framework。您可以使用「Ctrl + F」搜索搜索關鍵字,在輸出窗口中檢索這些參數。

如何檢索構建Visual Studio項目時使用的命令行 我無法從該輸出中檢索MSBuild命令行。

就像您提到的那樣,我也無法在選項窗口中找到「顯示所有設置」複選框。但這並不影響我們從輸出中檢索命令行。你應該改變「MSBuild項目生成輸出的詳細程度」爲「詳細」,然後生成項目,你會發現在輸出窗口的命令行,例如(C#項目):

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE ... 

後者的命令是真正的問題在這裏:運行的命令不是MSBuild.exe <something>,而是csc.exe <something>(C#項目)或CL.exe <something>(C/C++項目)。

爲了使這項工作,編譯命令必須從目錄C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE運行,並且啓動編譯命令時,不應該忘記雙引號以處理目錄名稱中的空格。

相關問題