Me pregunto si alguien conoce una extensión que aparece una advertencia si arrastra un archivo a otra carpeta a través del explorador de soluciones VS 2010. Muchas veces voy a estar en un archivo y mi computadora puede retrasarse un segundo y, de repente, el archivo está ahora en alguna otra carpeta y es posible que ni siquiera lo note.Arrastra la extensión de advertencia de archivo VS 2010?
Respuesta
Hay una extensión de Visual Studio disponible, llamado VSCommands 2010 que tiene una característica Prevenir Arrastre accidental & gota en el Explorador de soluciones.
Editar La característica es parte del paquete Pro, que no es libre.
No es gratis. Las preguntas de compras apestan. –
@Hans Estás en lo correcto: he actualizado mi respuesta. – shamp00
No conozco una extensión gratuita de Visual Studio que lo haga, pero aquí hay una muestra de C# de un Addin que demuestra cómo conectar con Visual Studio Global remove & renombra la gestión de archivos. Se basa en la interfaz IVsTrackProjectDocumentsEvents2.
Tendría que ampliar los dos métodos OnQueryxxx para satisfacer sus necesidades.
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...
no ... del todo ... claro cómo comenzar a usar este código. ¿Puede vincularme a cualquier proyecto de ejemplo/ejemplos/recursos aplicables para ver cómo codificar los complementos de vs2010? – perfectionist
@perfectionist: puede usar Visual Studio para crear dicho complemento: simplemente elija Nuevo proyecto/Otros tipos de proyectos/Extensibilidad y complemento de Visual Studio, luego copie y pegue el código. Sin embargo, si no tiene un desarrollador a la mano, no podrá implementar el funcionamiento de OnQueryRename/Remove ... –
De acuerdo, parece que esto podría ser factible: ciertamente me ha dado algo que hacer sobre el problema, por lo que por la presente se le otorga la recompensa. Huzzah. Volveré a publicar esta pregunta con resultados. – perfectionist
- 1. Abrir el documento de código fuente sin archivo en el editor de código de la extensión VS 2010
- 2. Versión Exe en nombre de archivo instalador MSI (VS 2010)
- 3. VS 2010 estableciendo archivo de clase no GUI como Componente
- 4. VS 2010 - Configuración de exportación de importación
- 5. Agregar extensión de archivo a archivo de extensión-menos
- 6. Encuentre un IVsTextView o IWpfTextView para un ProjectItem dado, en la extensión VS 2010 RC
- 7. VS 2010 Beta 2: "ResGen.exe" no se pudo ejecutar
- 8. ctypes vs extensión C
- 9. extensión de archivo MAKE
- 10. Extensión de archivo JSON
- 11. Firefox: complemento vs extensión?
- 12. Flujo de trabajo XAML Intellisense VS 2010
- 13. VS 2010 muy lento
- 14. Cómo obtener la posición absoluta del cursor de texto en la extensión de Visual Studio 2010
- 15. extensión de archivo MAKE
- 16. VS 2010 Performance Explorer
- 17. Despliegue de VS 2010 sin implementación web
- 18. Carrierwave cómo obtener la extensión de archivo
- 19. ¿Qué es la extensión de archivo .MSPX?
- 20. Tipo de archivo - Obtener la extensión original
- 21. Obteniendo la extensión de archivo en C
- 22. Comprobar la extensión de archivo en Java
- 23. Cambiando la extensión de archivo en Python
- 24. Obtener ImageFormat desde la extensión de archivo
- 25. Retire la extensión de un archivo
- 26. Extienda la extensión de archivo UITableView
- 27. Habilitar la cobertura de código en VS 2010 ultimate
- 28. OpenCV VS 2010 C++ CMake
- 29. Falta la carpeta App_Code en VS 2010
- 30. VS 2010 error - no se puede abrir el archivo "iostream"
¿Puedes por favor seleccionar la respuesta de shamp00 es correcta y otorgarle la recompensa? De lo contrario, esta pregunta puede cerrarse antes y perderá el premio de recompensa. – Will
Hmmm. Chobo2: no especificó "gratis" como parte de los criterios para la pregunta, pero ¿quizás colocó la recompensa y dijo "gratis" después de que se publicó la respuesta no gratuita? ... Ya sea que otorgue o no la recompensa, Publicaré una recompensa de 100 representantes para que alguien encuentre una extensión gratuita, en una nueva pregunta si cierra esta. – perfectionist
No, publiqué la recompensa antes de dar cualquier respuesta posible (de ahí por qué nunca edité mi pregunta original). No tengo planes de cerrar esta pregunta, ya que realmente me gustaría encontrar esta extensión (que es gratis, no voy a pagar $ 50 por VSCommands para una función y por eso no he recompensado la recompensa de shamp00 ya que incluso una opción paga es solo una forma de obtener una característica que estoy pidiendo) – chobo2