9

Visual Studio の Package Manager Console から Clean、Build、および Rebuild コマンドを実行したいのですが、今のところ方法がわかりません。

次のコマンドは、ソリューション内の最初のプロジェクトを取得します。

$project = Get-Project | select -First 1

を実行すると$project | Get-Member、アイテムのメンバーが表示され$projectます。

#Members of the $project ($project | Get-Member)

#   TypeName: System.__ComObject#{866311e6-c887-4143-9833-645f5b93f6f1}
#
#Name                 MemberType            Definition                                                                                                                                   
#----                 ----------            ----------                                                                                                                                   
#ProjectName          CodeProperty          System.String ProjectName{get=GetCustomUniqueName;}                                                                                          
#Delete               Method                void Delete ()                                                                                                                               
#Save                 Method                void Save (string)                                                                                                                           
#SaveAs               Method                void SaveAs (string)                                                                                                                         
#Extender             ParameterizedProperty IDispatch Extender (string) {get}                                                                                                            
#CodeModel            Property              CodeModel CodeModel () {get}                                                                                                                 
#Collection           Property              Projects Collection () {get}                                                                                                                 
#ConfigurationManager Property              ConfigurationManager ConfigurationManager () {get}                                                                                           
#DTE                  Property              DTE DTE () {get}                                                                                                                             
#ExtenderCATID        Property              string ExtenderCATID () {get}                                                                                                                
#ExtenderNames        Property              Variant ExtenderNames () {get}                                                                                                               
#FileName             Property              string FileName () {get}                                                                                                                     
#FullName             Property              string FullName () {get}                                                                                                                     
#Globals              Property              Globals Globals () {get}                                                                                                                     
#IsDirty              Property              bool IsDirty () {get} {set}                                                                                                                  
#Kind                 Property              string Kind () {get}                                                                                                                         
#Name                 Property              string Name () {get} {set}                                                                                                                   
#Object               Property              IDispatch Object () {get}                                                                                                                    
#ParentProjectItem    Property              ProjectItem ParentProjectItem () {get}                                                                                                       
#ProjectItems         Property              ProjectItems ProjectItems () {get}                                                                                                           
#Properties           Property              Properties Properties () {get}                                                                                                               
#Saved                Property              bool Saved () {get} {set}                                                                                                                    
#UniqueName           Property              string UniqueName () {get}                                                                                                                   
#Type                 ScriptProperty        System.Object Type {get=switch ($this.Kind) {...       

アイテムからクリーン ビルドおよびリビルド メソッドにアクセスできるかどうか、$projectまたはプロジェクト パスをターゲットにして msbuild を直接実行する必要があるかどうかはわかりません。

何か案が?

4

2 に答える 2

15

Visual Studio のオブジェクト モデルは、 SolutionBuildオブジェクトを介してソリューション全体または単一のプロジェクトをビルドする方法を提供します。

NuGet パッケージ マネージャー コンソールからソリューションを簡単に構築できます。

$dte.Solution.SolutionBuild.Clean($true)
$dte.Solution.SolutionBuild.Build($true)

$true フラグは、クリーン/ビルドが完了するまでコマンドが待機する必要があることを示します。

個々のプロジェクトを構築するのは簡単ではありません。SolutionBuild オブジェクトは、3 つのパラメーターを受け取る BuildProject メソッドを提供します。

$project = Get-Project | select -First 1
$dte.Solution.SolutionBuild.BuildProject("Debug", $project.FullName, $true)

また、クリーン ビルドを実行することもできません。

個々のプロジェクトをビルドしたい場合は、Pavel が示唆するように、MSBuild を使用する方が簡単なようです。

于 2012-08-27T12:38:53.703 に答える
5

nuget docsによると、このアクションを実行するコマンドはありません。msbuild を直接実行する最も簡単な方法だと思います。

$project = Get-Project | select -First 1
$msbuild = "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
& $msbuild $project.FullName /t:Clean`;Build`;Rebuild

これに基づいて、PS モジュールを作成し、nuget パッケージのようにパックして、他の開発者と共有し、他のプロジェクトで再利用できます。nuget で PS コマンドを追加する方法の良い例です

于 2012-08-27T08:10:54.657 に答える