Visual studio 拖动文件警告扩展名VS 2010?
我想知道是否有人知道,如果您通过VS2010解决方案资源管理器将文件拖到另一个文件夹,会弹出警告的扩展名。很多时候,我会在一个文件上,而我的计算机可能会延迟一秒钟,突然间,该文件现在位于某个其他文件夹中,我甚至可能没有注意到它。有一个名为Visual Studio的扩展名,它具有防止在解决方案资源管理器中意外拖放的功能 编辑Visual studio 拖动文件警告扩展名VS 2010?,visual-studio,visual-studio-2010,Visual Studio,Visual Studio 2010,我想知道是否有人知道,如果您通过VS2010解决方案资源管理器将文件拖到另一个文件夹,会弹出警告的扩展名。很多时候,我会在一个文件上,而我的计算机可能会延迟一秒钟,突然间,该文件现在位于某个其他文件夹中,我甚至可能没有注意到它。有一个名为Visual Studio的扩展名,它具有防止在解决方案资源管理器中意外拖放的功能 编辑 该功能是Pro软件包的一部分,不是免费的 我不知道有哪种免费的VisualStudio扩展可以做到这一点,但这里有一个插件的C#示例,演示如何连接到VisualStudi
该功能是Pro软件包的一部分,不是免费的 我不知道有哪种免费的VisualStudio扩展可以做到这一点,但这里有一个插件的C#示例,演示如何连接到VisualStudio全局删除和重命名文件管理。它基于接口 您必须扩展两个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...
这不是免费的。购物问题很糟糕。你能选择shamp00的答案是否正确并奖励他吗?否则,这个问题可能会提前结束,他将失去悬赏奖。Chobo2-你没有指定“自由”作为问题标准的一部分-但也许你在非自由答案发布后,放置了赏金并说“自由”?。。。无论你是否奖励奖金,如果你关闭这个问题,我将发布一个100代表的奖金,让某人找到一个免费的扩展-在一个新问题上。不,我在给出任何可能的答案之前发布了奖金(因此我从未编辑过我的原始问题)。我没有计划结束这个问题,因为我真的很想找到这个扩展(这是免费的-不会为一个功能的VSCommands支付50美元,因此为什么我没有奖励shamp00作为一个付费选项,这只是我要求的一个功能的一种方式。)不…完全。。。确定如何开始使用此代码。您可以将我链接到任何适用的示例项目/示例/资源,以了解如何编写vs2010加载项吗?@Perfectisit-您可以使用Visual Studio创建这样的加载项:只需选择新项目/其他项目类型/可扩展性和Visual Studio加载项,然后复制粘贴代码。但是,如果您手头没有开发人员,您将无法实现OnQueryRename/Remove的工作……好吧,看起来这可能是可行的——您肯定已经给了我一些解决问题的方法,因此您获得了奖金。胡扎。我会把结果发回这个问题。