VSIX上下文菜单用于文件类型
只是想象您正在解决方案资源管理器中,然后扩展了一些文件夹,以找到带有" XYZ"的文件.当您右键单击此文件时,您将获得上下文菜单.我想做的是在该上下文菜单中添加一个新/自定义按钮,但仅适用于" xyz"文件类型. 经过大量的狩猎,我很难过.我在主菜单中的按钮很容易,但是我正在尝试使其在文件的上下文中有条件地存在.如果您可以提供帮助,请提前感谢您. 解决方案 基于Sergey Vlasov的评论,我使用Dynamically add menu items在VS2022中进行测试创建了一个VSIX项目.它可以在该上下文菜单中添加一个新/自定义按钮,但仅适用于" xyz"文件类型,例如.请检查以下步骤. 这是最终运行结果: 步骤 1创建一个名为dynamicMenuitems的VSIX项目. 2在项目打开时,添加自定义命令项模板并将其命名为firstCommand. 完成这两个步骤后,您将看到项目目录结构: 3指定应在应看到按钮时的规则.在此示例中,规则是
10 2024-04-26
编程技术问答社区
调用标准的 "文件在Visual Studio之外改变 "对话框
我在我的vspackage中使用了Succesfuly创建了自定义单视图编辑器.我必须应对的许多事情之一是在更改Visual Studio之外的编辑文件时对情况做出了反应 - Visual Studio显示器中的"标准"编辑对话框,其中包括"是","是","是"(Reload Content)等,因此,如果更改了更多文件,则仅显示一个对话框. 但是,到目前为止,我在Vspackage中唯一可以做的是显示文件更改后的自定义对话框.它不是很漂亮 - 当我的编辑器中编辑的文件与其他一些文件一起编辑时,将向用户显示两个完全不同的对话框. 所以问题是 - 有什么方法如何调用我的文件更改"标准" Visual Studio"文件外部与"对话框"? 解决方案 听起来好像您正在使用 ivsfilechangeExex 接口. 这个几乎是您的博客文章可能是什么'寻找.通常,这用于检查是否可以编辑或重新加载文件,并将提供文件对话框提示(退房或重新加载). 这使用private
8 2024-04-25
编程技术问答社区
如何从Team Explorer获得默认的TFS服务器?
这样的调用需要服务器名称或URL: TeamFoundationServerFactory.GetServer("mytfsserver"); 同样,我可以使用以下内容获取可用服务器或服务器名称的列表: TeamFoundationServer[] servers = RegisteredServers.GetServers(); string[] serverNames = RegisteredServers.GetServerNames(); 但是如何获得Team Explorer使用的默认服务器? 另外,如果我能获得当前的工作空间,我认为我可以使用它来获得正确的TeamSundationServer.但是,我想在加载解决方案之前能够执行此操作,这意味着我没有用于查询其属于的工作空间的文件. 解决方案 请参阅以下内容:其他解决方案 不确定默认值(这仅仅是服务器团队Explorer已连接到上次vs保存其配置),但是您可以将服务器带入当前文件夹的映射.
8 2024-04-24
编程技术问答社区
Visual Studio和加载项的卸载
当我从Visual Studio的加载项菜单中删除一个加载项时,它不会从内存中卸载.有人知道我是否可以为我的加载项编写一些代码(在C#中)会迫使此卸载.这是可能的,还是我必须重新启动vs? 解决方案 如果您的DLL用托管代码编写,则无法强迫将其卸载为Visual Studio加载项. CLR不支持这种机制. 强制从过程中卸载DLL的唯一方法是拆除所有已加载DLL的应用程序.在Visual Studio加载项方案中,加载项将加载到默认的AppDomain中.将其拆除需要拆除整个过程:(
16 2024-04-23
编程技术问答社区
e.data.GetData始终为空
我正在与Visual Studio 2010合作,开发扩展 我需要从工具窗中的wpf treeview拖放到DSL图,但是当我致电e.data.getdata时,我无法获得一个值,并想知道我在做错了什么 private void OnDragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(SqlServerTable))) { try { SqlServerTable table = (SqlServerTable)e.Data.GetData(typeof(SqlServerTable)); MessageBox.Show(table.Name); } catch (Exce
10 2024-04-22
编程技术问答社区
在我给文本视图添加命令过滤器后的问题
我想在与我搜索许多文章中的密钥事件以寻求帮助,以及本文启发了我.我所做的是: 创建一个新类并实现" Ivstextmanagerevents"接口以注册每个TextView. public void OnRegisterView(IVsTextView pView) { CommandFilter filter = new CommandFilter(); IOleCommandTarget nextCommandTarget; pView.AddCommandFilter(filter, out nextCommandTarget); filter.NextCommandTarget = nextCommandTarget; } 添加实现iolecommandtarget的新类" Commandfilter",在其中我们可以从VS 拦截Olecommand public class CommandFilter : IOleComman
8 2024-04-22
编程技术问答社区
我的用于文本格式化的vs2008插件非常的慢
我写了一点addin,它可以对我的C#代码进行一些格式. 在Addins Exec方法中,我执行以下 try { TextSelection selection = (EnvDTE.TextSelection)_applicationObject.ActiveDocument.Selection; String foo = String.Empty; if (!text.IsEmpty) { foo = someCoolObjectThatFormatsText.Format(selection.Text); selection.Text = foo; // here everything gets painfully slow :-( } } catch (Exception) { throw; } 使用代码" sele
8 2024-04-21
编程技术问答社区
在VS可扩展性演练中,Guid应该包含32位数字和4个破折号(xxxxxxx | xxxx | xxxx | xxxxxxxxxxxx)
我正在使用 演练:第1部分 - 根据网站 . com/en-us/library/cc512961.aspx" rel =" nofollow"> http://msdn.microsoft.com/en-us/library/cc512961.aspx 项目完全按从 http://mpfproj11.codeplex.com/下载.我已经在2013年Visual Studio中测试了多个开发机的演练.我还使用其各自的SDK在Visual Studio 2010和2012中对此进行了测试.在每个测试中都介绍了同样的问题. 问题:我正在收到例外 - 类型" system.formatexception"的例外发生在mscorlib.dll中,但在用户代码中未处理其他信息:GUID应包含32位带4个破折号的数字(xxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxx--xxxx-- xxxx-xxxxxxxxxxxxxxxxxx in ProjectNode类方法: p
10 2024-04-21
编程技术问答社区
如何将参数作为反射传递/转移出去?-Visual Studio的可扩展性C#
我有一个OUT参数. 是否可以将其作为反射转移? 你能给我一些例子怎么做? 解决方案 我不确定这与VS扩展性有什么关系,但是可以通过反射调用out参数的方法,然后找出out参数的值之后: using System; using System.Reflection; class Test { static void Main() { MethodInfo method = typeof(int).GetMethod ("TryParse", new Type[] { typeof(string), typeof(int).MakeByRefType() }); // Second value here will be ignored, but make sure it's the right type obje
10 2024-04-21
编程技术问答社区
在Visual Studio观察窗口的 "非公开成员 "节点中,有哪些内容?
我假设C#对象的所有非公共(IE,私有,受保护,内部和内部受保护)成员都在" non-public成员"下,当我查看Visual Studio中的对象时观看窗口.但是,我注意到此代码的一个血管: class HashDerived : System.Security.Cryptography.HashAlgorithm { ... } HashAlgorithm hash1 = new HashDerived(); HashAlgorithm hash2 = new System.Security.Cryptography.SHA1Cng(); hash1的"非公共成员"看起来像这样: 而hash2的"非公共成员"看起来像这样: 因此,对于hash1来说,只有private字段(m_bdisposed)出现在" non-public member "节点下,其中hash2,甚至protected和protected internal成员就像" h
58 2024-04-21
编程技术问答社区
获得一个cshtml文件的SemanticModel?
我想在剃须刀视图中C#代码块的上下文中使用Roslyn分析语义信息. 是否有任何方法(在Visual Studio 2015中,甚至在单位测试中)获取代表此代码的SemanticModel? 解决方案 剃须刀文件包含带有生成的C#代码的C#投影缓冲区(包括您不写自己的零件).此缓冲区具有完整的Roslyn服务,正是您想要的. 您需要浏览文本视图的BufferGraph并找到CSharp缓冲区;然后,您可以获取其Document和语义模型. 如果您是从光标位置开始的,则需要将该位置映射到CSharp buffer. 请注意,文本视图包含多个 CSharp缓冲区是完全合法的. (尽管剃须刀编辑永远不会这样) 如果您不在文本视图中工作,则需要自己完成所有这些;您需要通过Razor编译器运行剃须刀来获取生成的C#源,然后将其与Roslyn进行编译以获得语义模型. 其他解决方案 使用 RazorTemplateEngine.GenerateCode 和
2 2024-04-19
编程技术问答社区
如何将我的服务注册为全球服务,或者如何在我的方案中使用MEF?
我想通过全球可见性创建自己的服务.为了实现这一目标,我遵循 ship示例解决方案. 一切顺利,我可以在类中调用我的服务,该课程从包装摘要类延伸,以此方式: public class ClientPackage : Package { private void GetGlobalServiceCallback(object sender, EventArgs args) { IMyGlobalService service = GetService(typeof(SMyGlobalService)) as IMyGlobalService; } } 因为我在包裹中,所以我可以轻松致电getService,并且可以得到服务.但是,如果我想从一堂课中获得服务,那不是扩展包装摘要类呢? 例如,我有一个类,该类实现了Itagger接口.如果我想在此类中获得服务,则必须以这种方式使用package.getGlobalService()方法:
4 2024-04-17
编程技术问答社区
如何访问项目代码元数据?
在我的vspackage中,我需要用其实际值替换对代码中属性的引用.例如 public static void Main(string[] args) { Console.WriteLine(Resource.HelloWorld); } 我想要的是用其实际值替换"资源. Visual Studio是否会曝光任何API来处理项目的代码模型?它绝对有一个,因为这与重命名变量的常见任务非常相似.我不想在输出组件上使用反射,因为它很慢,并且将文件锁定一段时间. 解决方案 没有直接的方法可以做到这一点.可靠地从Visual Studio中获得AST(以及对其进行更改)一直是一个大问题. Rosalyn项目的一部分是创建一种统一的方法,因为许多工具窗口都有自己的工作方式. 有四种方法可以做到这一点: 符号 filecodemodel + codedom rosalyn ast 未探索的方法 符号 我相信大多数工具窗口,例如CodeView和C
10 2024-04-17
编程技术问答社区
如何从VSPackage获取当前运行的Visual Studio安装路径
我已经创建了一个VSPackage,该>应该将一些XML模式文件复制到Visual Studio的安装路径:%VS install path% \Xml\Schemas. 我的计算机上安装了多个视觉工作室: Visual Studio 2013 Professional. Visual Studio 2015社区版. Visual Studio Express版本. 我需要检测路径 Visual Studio我的VSPackage正在执行其命令. 如何在包装中获得当前运行的Visual Studio的安装路径? 解决方案 首先,我同意卡洛斯的观点,在这个特定的角度,延期绝不需要提高特权.但这并不意味着您的问题无法解决;我只建议以另一种方式进行... 我与我的一个扩展名相似.而且我正在寻找不需要Windows安装程序设置的解决方案,而是为纯VSIX软件包工作.我通过创建一个小型控制台应用程序解决了它,该应用程序由包装组件引用.我在控制台应用程序中添
12 2024-04-16
编程技术问答社区
VS 2010鼠标处理器扩展--不工作
我正在尝试Visual Studio 2010 Extension,我需要与Imouseprocessor暴露的事件一起工作. 据我从文档中透露的,我应该创建一个iMouseprocesorprovider,而导出正在使用MEF,以便可以通过Visual Studio自动将其拾取. 我创建了此类: [Export(typeof(IMouseProcessorProvider))] [ContentType("code")] internal sealed class MouseProcessorFactory : IMouseProcessorProvider { public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView) { return new MouseProcessor(); } } 当我运行Visual Studio的
8 2024-04-15
编程技术问答社区
我如何在Visual Studio中以编程方式执行 "转到定义"?
给定一个代表特定类/字段/属性(例如MyNameSpace.MyClass或System.String.Length)的字符串,我如何以编程方式使Visual Studio转到该类别/字段/属性(即,让Visual Studio做如果我要在代码编辑器中输入参考,然后击中F12)? 也会发生同样的事情. 解决方案 您可能需要执行以下操作. 获取全局致电 IVsObjectManager2.FindLibrary IVsObjectManager2.FindLibrary IVsObjectManager2.FindLibrary IVsObjectManager2.FindLibrary IVsObjectManager2.FindLibrary IVsObjectManager2.FindLibrary 获取c#库,然后将结果施加到 致电 如果由此产生的 > 有 CanGoToSource 与 GoToSource 跳到源的方法. 否则,只需向用户显示可能的选项,而
14 2024-04-15
编程技术问答社区
MVC T4 MvcTextTemplateHost和定制的 "控制器 "T4模板
我正在创建自己的自定义T4模板,该模板与我的MVC Web应用程序中包含的ADO.NET实体框架模型(.EDMX文件)集成. 参考 请简要介绍以下两个URL. Scott Hanselman-" Visual Web开发人员团队博客 - ASP.NET MVC开发人员的快速启动指南 我想实现的简短描述 使用T4引擎基于ADO.NET Entity Framework模型的主要密钥来生成MVC控制器类. 我现在拥有的 MVC T4模板文件(例如,Controller.TT,Create.tt等...)已作为我的MVC Web项目的一部分. 我有一个ado.net实体框架 mymodel.edmx文件在" 型号"中 基于控制器名称(例如," productController"),我想检索 [system.type] " product"的信息强>从ADO.NET实体框架模型中的类. 我希望能够以与MVC查看T4文件(例如Edit.tt) s
12 2024-03-13
编程技术问答社区
找出游标是否在一个方法、类或命名空间块内
我想创建一个视觉工作室addin,可以识别当前的镜头是否在方法,类或名称空间块中,即,如果套件移动,addin应该能够记下Caret当前的状态在某些元素内部. 如果可以将其扩展到卷曲括号中的任何C#块,例如属性,这是很棒的. 尽管我已经检查了类似的问题,但请让我知道这是否是重复的问题,以便我可以相应地标记.如果其他与Addin相关的问题显然在这里有所帮助,请告诉我. 基本上,我想知道我们可以使用哪些技术以及如何完成. 编辑:我想开始的简短答案是: 获取 Visual Studio 2010 SDK SP1 可能使用"可扩展性"项目模板"编辑器文本装饰"或其他一些此类模板. 解决方案 实际上,我认为您需要做的第一件事是判断班级中有多少方法或属性以及它们的位置是什么.获取这些信息后.您需要做的下一步是判断当前的光标位置是什么.然后,您可以与获得的这些方法相比进行比较.到目前为止,您可以获得您的光标使用的方法.这是我找到的球场解决方案. 让我们谈谈
24 2024-01-19
编程技术问答社区
在文档级定制中从Windows窗体中引用excel表格
我开发了一个VS 2008加载项,并在解决方案资源管理器中的" project"节点的上下文菜单中添加了自定义菜单项. 这使我可以右键单击解决方案中的任何项目并在该项目上执行自定义操作.或者至少,如果我知道如何从我的点击活动处理程序访问选定的项目. 有更多经验的人可以帮助我吗? 解决方案 我认为您正在寻找的是 dte.activeSolutionProjects .
26 2024-01-19
编程技术问答社区
我可以创建一个使用WPF显示的Visual Studio 2010插件吗?
我们正在努力为我们的企业应用程序创建专门的图形编辑器.我们看过并拒绝了DSL.理想情况下,我想将编辑器的主要接口像代码窗口一样停靠,并使用WPF进行绘制.谁能将我指向一些文档,以使我走正确的道路? 谢谢. colin. 更新:它开始看起来像"不".来自 http://msdn.microsoft.com/en-us/en-us/library/library/bbb166228. aspx :"文档窗口是通过实现编辑器创建的.ivSeditorFactory界面创建文档窗口作为实例化编辑器的一部分.有关更多信息,请参阅使用旧式接口访问编辑器." ." ." 按照链接到 http://msdn.microsoft US/Library/DD885127.ASPX 给出了这一点:"您可以从旧接口访问Visual Studio编辑器.Visual Studio SDK包括称为Shims的适配器,这使这些接口能够与新编辑器进行交互但是,我们建议您更新您的旧版代码以使用新的
14 2024-01-19
编程技术问答社区