2012-08-27 20 views
8

के माध्यम से पुनर्निर्माण मैं, स्वच्छ चलाने दृश्य स्टूडियो में पैकेज प्रबंधक कंसोल के माध्यम से निर्माण और आदेशों के पुनर्निर्माण करना चाहते हैं लेकिन अब तक मैं कैसे को खोजने के लिए नहीं कर पाए हैं।स्वच्छ चल रहा है, निर्माण और पैकेज प्रबंधक कंसोल

$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

पैकेज प्रबंधक कंसोल से ऐसा करने के लिए प्रेरणा क्या है? – manojlds

उत्तर

14

दृश्य स्टूडियो के ऑब्जेक्ट मॉडल SolutionBuild वस्तु के माध्यम से पूरे समाधान या एक परियोजना का निर्माण करने के लिए एक रास्ता प्रदान करता है।

समाधान का निर्माण NuGet पैकेज प्रबंधक कंसोल से सरल है।

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

$ वास्तविक ध्वज इंगित करता है कि आदेश को साफ/निर्माण समाप्त होने की प्रतीक्षा करनी चाहिए।

एक व्यक्तिगत परियोजना का निर्माण सीधा नहीं है। SolutionBuild ऑब्जेक्ट BuildProject method प्रदान करता है जो तीन पैरामीटर लेता है।

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

यह आपको क्लीन बिल्ड चलाने की अनुमति नहीं देता है।

आप एक व्यक्ति परियोजना निर्माण कर लिया तो चाहते हैं, के रूप में पावेल पता चलता है, MSBuild का उपयोग कर अधिक straighforward हो रहा है।

+0

मुझे अब तक के सबसे अच्छे उत्तरों में से एक मिला है। आपका बहुत बहुत धन्यवाद! – tugberk

3

docs nuget अनुसार इस कार्रवाई करने के लिए कोई आदेशों हैं। मुझे लगता है कि सीधे 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 

इसके आधार पर आप अपने पुनश्च मॉड्यूल लिख सकते हैं और अन्य डेवलपर्स के साथ साझा करें और अन्य परियोजनाओं में पुन: उपयोग करने nuget पैकेज की तरह यह पैक कर सकते हैं। Good example how to add PS commands by nuget

+0

NuGet दस्तावेज़ सभी उपलब्ध कार्रवाइयों को नहीं दिखाता है जो किया जा सकता है। – tugberk

+0

मेरा मतलब है कि nuget एक्सटेंशन अधिक अतिरिक्त आदेश प्रदान नहीं करता है, लेकिन आप सभी पीएस कमांड निष्पादित कर सकते हैं यह कंसोल है। और इस तरह से पीएस से एमएसबिल्ड को कॉल करना आम बात है। आप छोटे पीएस मॉड्यूल क्यों लिखना नहीं चाहते हैं और इसे nuget पैकेज के रूप में पैक करना चाहते हैं? –

+0

मैं इसे अपने न्यूजेट प्रोफाइल में डाल दूंगा। मैं इसे एक nuget पैकेज के रूप में नहीं चाहता। इसके अलावा, आपको विशेष आदेशों की आवश्यकता नहीं है। पीएमसी बहुत कम स्तर की वस्तु प्रदान करता है: $ dte। आप वहां से कई चीजें कर सकते हैं या प्राप्त कर सकते हैं। E.g: '($ dte.Windows | कहां {$ _। टाइप -eq" vsWindowTypeSolutionExplorer "}) ऑब्जेक्ट। चयनित Items.Object | चयन करें- पहला 1' 'गेट-प्रोजेक्ट' के समान परिणाम देता है चयन करें- पहला 1' यहां, मैं देख रहा हूं कि स्वच्छ, बिल्ड और पुनर्निर्माण कार्यों के लिए मूल समर्थन है या नहीं। मुझे आशा है कि मैं स्पष्ट हूं। – tugberk

संबंधित मुद्दे