2012-08-27 12 views
8

Visual Studioのパッケージマネージャコンソールからクリーン、ビルド、および再ビルドの各コマンドを実行したいが、今のところ見つからない。パッケージマネージャコンソールを使用してクリーン、ビルド、再ビルドを実行する

$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のを実行する必要がある場合の方法を再構築することができるかどうかわかりません。

+1

これをPackage Managerコンソールから実行する動機は何ですか? – manojlds

答えて

14

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

NuGet Package Managerコンソールからソリューションを構築するのは簡単です。

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

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

個々のプロジェクトを作成するのは簡単ではありません。 SolutionBuildオブジェクトは、3つのパラメータを取るBuildProject methodを提供します。

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

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

パブルが示唆するように、個々のプロジェクトを構築する場合は、MSBuildを使用するほうがはるかにストレートです。

+0

これまでに私が得た最高の答えの一つです。どうもありがとう! – tugberk

3

ナゲット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パッケージのようにそれをパックすることができます。 Good example how to add PS commands by nuget

+0

NuGet docsは実行可能なすべてのアクションを表示していません。 – tugberk

+0

これは、ナゲットの拡張機能があまり追加のコマンドを提供しないことを意味しますが、このコンソールはすべてのPSコマンドを実行できます。この方法でPSからmsbuildを呼び出すのが一般的な方法です。小さなPSモジュールを書いて、それをナゲットパッケージとして梱包したいのですが? –

+0

私はそれを私のナゲットプロフィールに入れます。私はこれをナゲットパッケージにしたくありません。また、特別なコマンドは必要ありません。 PMCは非常に低いレベルのオブジェクトを提供します:$ dte。あなたはそこから多くのことをすることができます。例: '($ dte.Windows | {$ _。Type -eq" vsWindowTypeSolutionExplorer "})。Object.SelectedItems.Object | 「First-1」を選択すると、「Get-Project | select -First 1'ここでは、Clean、Build、Rebuildの各アクションのネイティブサポートがあるかどうかを探しています。私は明らかに希望します – tugberk