2012-02-29 16 views
6

Bir dosyayı VS 2010 çözüm kaşifi aracılığıyla başka bir klasöre sürüklerseniz uyarı veren bir uzantı olduğunu bilip bilmediğimi merak ediyorum. Çoğu kez bir dosyada olacağım ve bilgisayarım bir saniyeliğine gecikebilir ve aniden dosya şu anda başka bir klasörde ve hatta bunu fark etmeyebilir.Sürükle Dosya Uyarısı Uzatma VS 2010?

+0

Eğer şampuanın cevabını seçer misin ve ona ödül verir misin? Aksi takdirde, bu soru daha önce kapatılabilir ve ödül ödülünü kaybeder. – Will

+0

Hmmm. Chobo2 - soruya verilen kriterlerin bir parçası olarak "özgür" belirtmediniz - ama özgür olmayan cevabın yayınlanmasından sonra belki de "ücretsiz" demiştiniz ve "bedava" dediniz? ... Ödül kazanıp kazanmadığınızı, Birini kapatırsam yeni bir soru üzerine - ücretsiz bir uzantı bulması için 100 rep ödülünü göndereceğim. – perfectionist

+0

Hayır Herhangi bir olası cevap verilmeden önce ödül verdim (bu yüzden orijinal sorumu asla düzenlemedim). Bu uzantıyı gerçekten bulmak istemediğim için bu soruyu kapatmak için hiçbir planım yok (bu ücretsiz - VSCommands için bir özellik için 50 $ ödemeyecek ve bu yüzden ödemeli bir seçenek olarak bile shamp00'yi ödüllendiremedim. Ben soruyorum bir özellik için çok fazla yol.) – chobo2

cevap

7

bir özellik engelle kazara Drag Çözüm Explorer yılında & Damla sahiptir VSCommands 2010 denilen mevcut bir Visual Studio uzantısı yok.

enter image description here

Düzenleme özellik özgür değildir Pro paketinin bir parçasıdır.

+0

Ücretsiz değil. Alışveriş soruları emmek. –

+0

@Hans Doğru - Cevabımı güncelledim. – shamp00

0

Bunu yapmak için ücretsiz bir Visual Studio eklentisi bilmiyorum, ancak burada Visual Studio global'e nasıl bağlanılacağını gösteren bir Addin C# örneğidir. & yeniden adlandırma dosya yönetimini kaldırın. IVsTrackProjectDocumentsEvents2 arayüzüne dayanmaktadır.

İhtiyaçlarınıza uygun iki OnQueryxxx yöntemini genişletmeniz gerekir.

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

... tamamıyla ... bu kodu kullanmaya nasıl başlayacağınıza emin değilsiniz. Karşılıklı olarak vs2010 ekleme kodları ile ilgili herhangi bir uygulanabilir örnek projeler/örnekler/kaynaklar ile bağlantı kurabilir misiniz? – perfectionist

+0

@perfectionist - Böyle bir eklenti oluşturmak için Visual Studio'yu kullanabilirsiniz: Yeni Proje/Diğer Proje Türleri/Genişletilebilirlik ve Visual Studio Eklentisi'ni seçip kopyalayıp kopyalayın. Ancak, elinizde bir geliştirici yoksa, OnQueryRename/Remove ... –

+0

işlerini uygulayamayacaksınız, bu uygun olabilir gibi görünüyor - kesinlikle bana bir şeyler verdiniz sorun hakkında, bu yüzden bu vesile ile ödüllendirilirsiniz. Hurra. Sonuçlar ile bu soruya geri göndereceğim. – perfectionist