2012-02-29 13 views
6

मैं अगर किसी को भी एक विस्तार है जो एक चेतावनी पॉप अप होता है अगर आप VS 2010 समाधान एक्सप्लोरर के माध्यम से किसी अन्य फ़ोल्डर में एक फ़ाइल खींचें जानता है सोच रहा हूँ। कई बार मैंने एक फ़ाइल पर हो जाएगा और अपने कंप्यूटर एक दूसरे और अचानक के लिए अंतराल हो सकता है फ़ाइल कुछ अन्य फ़ोल्डर में है और मैं भी यह ध्यान नहीं कर सकते हैं।खींचें फ़ाइल चेतावनी एक्सटेंशन वीएस 2010?

+0

क्या आप कृपया शैम्प 00 का उत्तर चुन सकते हैं और उसे बक्षीस दे सकते हैं? अन्यथा, यह प्रश्न पहले बंद हो सकता है और वह बक्षीस पुरस्कार खो देगा। – Will

+0

हमम। Chobo2 - आप प्रश्न के लिए मापदंड के भाग के रूप निर्दिष्ट नहीं किया है "मुक्त" - लेकिन शायद आप इनाम रखा और कहा "मुक्त" के बाद गैर मुक्त उत्तर पोस्ट कर रहा था ... या नहीं, आप इनाम पुरस्कार, यदि आप इसे बंद करते हैं तो एक नए प्रश्न पर - मैं किसी के लिए एक मुफ्त एक्सटेंशन खोजने के लिए 100 प्रतिनिधि बकाया पोस्ट करूंगा। – perfectionist

+0

नहीं, मैं इनाम पोस्ट से पहले किसी भी संभव जवाब दिए गए थे (इसलिए क्यों मैं अपने मूल प्रश्न संपादित कभी नहीं)। मैं इस सवाल को बंद करने के रूप में मैं वास्तव में इस एक्सटेंशन प्राप्त करना चाहते हैं कोई योजना नहीं है (कि नि: शुल्क है - एक विशेषता है और इसलिए के लिए VSCommands के लिए $ 50 का भुगतान करने के लिए नहीं जा कारण है कि मैं इनाम के रूप में भी एक भुगतान विकल्प यह है shamp00 को पुरस्कृत नहीं किया है मैं एक फीचर के लिए बहुत कुछ करने का तरीका हूं।) – chobo2

उत्तर

7

वहाँ एक दृश्य स्टूडियो एक्सटेंशन उपलब्ध VSCommands 2010 कहा जाता है जो एक सुविधा रोकें आकस्मिक खींचें समाधान एक्सप्लोरर में & ड्रॉप है।

enter image description here

संपादित सुविधा प्रो पैकेज है जो स्वतंत्र नहीं है का हिस्सा है।

+0

यह मुफ़्त नहीं है। खरीदारी के सवाल चूसना। –

+0

@ हंस आप सही हैं - मैंने अपना जवाब अपडेट कर लिया है। – shamp00

0

मुझे एक मुफ्त विजुअल स्टूडियो एक्सटेंशन के बारे में पता नहीं है जो यह करेगा, लेकिन यहां एक एडिन का सी # नमूना है जो दिखाता है कि विजुअल स्टूडियो ग्लोबल रिमोट & फ़ाइल प्रबंधन का नाम बदलें। यह IVsTrackProjectDocumentsEvents2 इंटरफ़ेस पर आधारित है।

आप अपनी आवश्यकताओं के अनुसार दो OnQueryxxx तरीकों का विस्तार करना होगा।

using System; 
using System.Diagnostics; 
using EnvDTE; 
using EnvDTE80; 
using Extensibility; 
using Microsoft.VisualStudio.Shell; 
using Microsoft.VisualStudio.Shell.Interop; 

namespace MyAddin1 
{ 
    public class Connect : IDTExtensibility2, IVsTrackProjectDocumentsEvents2 
    { 
     private uint _trackerCookie; 

     public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) 
     { 
      _applicationObject = (DTE2)application; 
      _addInInstance = (AddIn)addInInst; 

      // the Addin project needs assembly references to Microsoft.VisualStudio.Shell, Microsoft.VisualStudio.Shell.Interop && Microsoft.VisualStudio.OLE.Interop 
      // any version should do 
      ServiceProvider sp = new ServiceProvider((Microsoft.VisualStudio.OLE.Interop.IServiceProvider)_applicationObject); 
      IVsTrackProjectDocuments2 tracker = (IVsTrackProjectDocuments2)sp.GetService(typeof(SVsTrackProjectDocuments)); 

      // ask VS to notify us of files & directories changes 
      tracker.AdviseTrackProjectDocumentsEvents(this, out _trackerCookie); 
     } 

     public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) 
     { 
      if (_trackerCookie != 0) 
      { 
       // we quit, tell VS not to notify us anymore 
       ServiceProvider sp = new ServiceProvider((Microsoft.VisualStudio.OLE.Interop.IServiceProvider)_applicationObject); 
       IVsTrackProjectDocuments2 tracker = (IVsTrackProjectDocuments2)sp.GetService(typeof(SVsTrackProjectDocuments)); 
       tracker.UnadviseTrackProjectDocumentsEvents(_trackerCookie); 
       _trackerCookie = 0; 
      } 
     } 

     public int OnQueryRenameFiles(IVsProject pProject, int cFiles, string[] rgszMkOldNames, string[] rgszMkNewNames, VSQUERYRENAMEFILEFLAGS[] rgFlags, VSQUERYRENAMEFILERESULTS[] pSummaryResult, VSQUERYRENAMEFILERESULTS[] rgResults) 
     { 
      Trace.WriteLine("OnQueryRenameFiles pProject:" + pProject + " old[0]:" + rgszMkOldNames[0] + " new[0]:" + rgszMkNewNames[0]); 

      // TODO: implement this (I have assumed cFiles is 1 here) 
      if (!NotRenameOk(old[0], new[0]) 
      { 
       rgResults[0] = VSQUERYRENAMEFILERESULTS.VSQUERYRENAMEFILERESULTS_RenameNotOK; // nope, it's not ok 
      } 
      return 0; 
     } 

     public int OnQueryRemoveFiles(IVsProject pProject, int cFiles, string[] rgpszMkDocuments, VSQUERYREMOVEFILEFLAGS[] rgFlags, VSQUERYREMOVEFILERESULTS[] pSummaryResult, VSQUERYREMOVEFILERESULTS[] rgResults) 
     { 
      Trace.WriteLine("OnQueryRemoveFiles pProject:" + pProject + " file[0]:" + rgpszMkDocuments[0]); 

      // TODO: needs to be implemented, use rgResults to tell VS if it's ok or not 
      return 0; 
     } 

     // other IVsTrackProjectDocumentsEvents2 methods implementation omitted for brevity... 
+0

नहीं ... पूरी तरह से ... सुनिश्चित करें कि इस कोड का उपयोग कैसे शुरू करें। क्या आप कोड बनाम 2010 जोड़ों को जोड़ने के तरीके के साथ किसी भी लागू नमूना परियोजनाओं/उदाहरण/संसाधनों से लिंक कर सकते हैं? – perfectionist

+0

@perfectionist - आप इस तरह के एडिन बनाने के लिए विजुअल स्टूडियो का उपयोग कर सकते हैं: बस नई परियोजना/अन्य परियोजना प्रकार/एक्सटेंसिबिलिटी और विजुअल स्टूडियो ऐड-इन चुनें, फिर कोड पेस्ट करें। हालांकि, अगर आपके पास डेवलपर नहीं है, तो आप OnQueryRename/निकालें के कार्यप्रणाली को लागू करने में सक्षम नहीं होंगे ... –

+0

ठीक है, ऐसा लगता है कि यह संभव हो सकता है - आपने निश्चित रूप से मुझे कुछ करने के लिए दिया है समस्या के बारे में, इसलिए आपको इस तरह से बक्षीस से सम्मानित किया जाता है। हुज़्ज़ाह। मैं परिणामों के साथ इस प्रश्न पर वापस पोस्ट करूंगा। – perfectionist