Drag File Warning Extension VS 2010? - PullRequest
       0

Drag File Warning Extension VS 2010?

6 голосов
/ 01 марта 2012

Мне интересно, знает ли кто-нибудь расширение, которое выдает предупреждение, если вы перетаскиваете файл в другую папку с помощью обозревателя решений VS 2010. Много раз я буду в файле, и мой компьютер может на секунду задержаться, и вдруг файл окажется в какой-то другой папке, и я даже не заметю этого.

Ответы [ 2 ]

7 голосов
/ 06 марта 2012

Доступно расширение Visual Studio под названием VSCommands 2010 , которое имеет функцию Предотвращение случайного перетаскивания в обозревателе решений .

enter image description here

Редактировать Эта функция является частью пакета Pro, который не является бесплатным.

0 голосов
/ 16 марта 2012

Я не знаю, какое бесплатное расширение Visual Studio могло бы это сделать, но вот пример C # Addin, демонстрирующий, как подключиться к глобальному управлению файлами удаления и переименования в Visual Studio. Он основан на интерфейсе 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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...