我想通过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。
有什么想法吗?
答案 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