通过程序包管理器控制台运行清理,构建和重建

时间:2012-08-27 07:36:09

标签: visual-studio powershell nuget

我想通过Visual Studio中的程序包管理器控制台运行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项目进入Clean Build and Rebuild方法,或者我是否应该通过定位项目路径直接运行msbuild。

有什么想法吗?

2 个答案:

答案 0 :(得分:15)

Visual Studio的对象模型提供了一种通过SolutionBuild对象构建整个解决方案或单个项目的方法。

NuGet Package Manager控制台可以直接构建解决方案。

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

$ true标志表示该命令应该等待clean / build完成。

建立一个单独的项目并不是那么简单。 SolutionBuild对象提供了一个BuildProject method,它有三个参数。

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

它也不允许您运行Clean构建。

如果你想构建一个单独的项目,那么正如Pavel建议的那样,使用MSBuild似乎更直接。

答案 1 :(得分: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包,以便与其他开发人员共享并在其他项目中重复使用。 Good example how to add PS commands by nuget