我想在VS2010 addin中"模拟"右键单击/更新服务Reference命令.我有一个对包含(Silverlight ...)项目的参考,我知道服务参考的名称和服务的URL. 我发现了以下内容:但是从代码中调用svcutil?如果是这样,怎么样? (我使用svcutil还是slsvcutil?如何从addin内部称呼它?) 谢谢 解决方案 我相信Visual Studio命令是" Project.UpdateServiceReference".因此,我想您可以尝试选择您感兴趣的节点,然后运行此命令,例如: envDTE.Windows.Item(vsWindowKindSolutionExplorer).Activate(); envDTE.ActiveWindow.Object.GetItem(@"MyProject\Service References\Proxy").Select(vsUISelectionType.vsUISelectionTypeSelec
以下是关于 vsx 的编程技术问答
我在自定义项目系统上工作,我对重命名项目有问题.项目系统实施基于MPF,并通过解决方案资源管理器重命名项目或多或少没有任何问题,但是... 当项目重命名时,我还更新了存储在文件本身中的信息.如果文档由代码编辑器打开,则编辑器中的文本不会刷新(只有文档窗口的标题更改为新文件名).如果我保存了打开的文档,那么重命名操作应用的所有更改当然是Overriden. 如何强制编辑器重新加载文档,以便显示自动更改? 解决方案 假设它是文本文件与某些自定义设计器,请使用IVsRunningDocumentTable接口获取当前打开的文件的文本缓冲区. interface Facterface的第四个迭代最简单的托管代码使用.您可以调用IsMonikerValid(其中"绰号"是文件名),以查看文件是否打开,如果是的,请致电GetDocumentData以获取文件的IVsTextBuffer.该类型本身很烦人,因此,如果您仅支持Visual Studio 2010或更高版本,则将其传递
只是想象您正在解决方案资源管理器中,然后扩展了一些文件夹,以找到带有" XYZ"的文件.当您右键单击此文件时,您将获得上下文菜单.我想做的是在该上下文菜单中添加一个新/自定义按钮,但仅适用于" xyz"文件类型. 经过大量的狩猎,我很难过.我在主菜单中的按钮很容易,但是我正在尝试使其在文件的上下文中有条件地存在.如果您可以提供帮助,请提前感谢您. 解决方案 基于Sergey Vlasov的评论,我使用Dynamically add menu items在VS2022中进行测试创建了一个VSIX项目.它可以在该上下文菜单中添加一个新/自定义按钮,但仅适用于" xyz"文件类型,例如.请检查以下步骤. 这是最终运行结果: 步骤 1创建一个名为dynamicMenuitems的VSIX项目. 2在项目打开时,添加自定义命令项模板并将其命名为firstCommand. 完成这两个步骤后,您将看到项目目录结构: 3指定应在应看到按钮时的规则.在此示例中,规则是
我正在开发VS2013的扩展名.由于它将通过MSI安装,因此我使用提供bindingpath的属性将基本目录更改为安装文件夹.但是,将在运行时加载的第三方DLL参考不是从探测路径中选择DLL.它总是看Visual Studio devenv.exe 文件夹.有什么方法可以强迫DLL查看我的安装文件夹. using MD=Microsoft.VisualStudio.Modeling.Shell; MD.ProvideBindingPath(SubPath = @"")] public sealed class AutomationCommandPanePackage : Package { public AutomationCommandPanePackage() { string installationPath = HelperMethods.GetInstallationPath(); if
我有一个开源vspackage,我想在Visual Studio 2005,Visual Studio 2008和Visual Studio 2010中发布,我正在尝试弄清楚如何创建安装程序以及如何执行包装注册每个版本的Visual Studio. 我完成的部署研究表明,安装程序的最佳选择是MSI中的VSIX. 我所做的注册研究还不清楚. Vspackage注册似乎在每个版本中都不同(VS2005使用regpkg,VS2008使用PKGDEF,VS2010使用VSIX). 谁能分享他们的经验和/或指向我针对多个Visual Studio的最佳方法的任何信息?我正在寻找最简单的实现,最好将其保存在一个安装程序中,如果合理的话. 任何帮助将不胜感激! 解决方案 简短答案:如果您想要一个以2005,2008和2010来定位/寄存器的单个安装程序,那么实际上,选择实际上很简单.您应该创建一个基于MSI的安装程序,然后注册到HKLM \ Software \ Mic
从envdte.projectitem获取罗斯林语法的最佳方法是什么?我找到了另一种方法的方法(Roslyn的文档进入ProjectItem). 我从打开的文档中调用了vSix命令,我想在那里尝试罗斯琳的语法树. 此代码有效,但对我来说看起来很尴尬: var pi = GetProjectItem(); var piName = pi.get_FileNames(1); var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel)); var workspace = componentModel.GetService(); var ids
我想通过全球可见性创建自己的服务.为了实现这一目标,我遵循 ship示例解决方案. 一切顺利,我可以在类中调用我的服务,该课程从包装摘要类延伸,以此方式: public class ClientPackage : Package { private void GetGlobalServiceCallback(object sender, EventArgs args) { IMyGlobalService service = GetService(typeof(SMyGlobalService)) as IMyGlobalService; } } 因为我在包裹中,所以我可以轻松致电getService,并且可以得到服务.但是,如果我想从一堂课中获得服务,那不是扩展包装摘要类呢? 例如,我有一个类,该类实现了Itagger接口.如果我想在此类中获得服务,则必须以这种方式使用package.getGlobalService()方法:
我们有一个Visual Studio软件包(VS软件包),该软件包引用了类库项目(项目A).项目A反过来参考另一个类库项目(项目B). 因此,依赖性结构看起来像这样:VS软件包>项目A> Project B 所有项目都存在于同一解决方案中,并且依赖关系已作为适当的项目参考设置. 如果我在Visual Studio中构建软件包,并在垃圾箱/调试文件夹中查看所有必要的组件,包括项目B.但是,当部署软件包时,只有项目A的组件存在,并且丢失了项目B.如何告诉Visual Studio将项目B的间接依赖性包括在包装中? 这个msdn 建议"默认情况下,在多项目解决方案中,如果输出到VSIX软件包的项目包括对同一解决方案中另一个项目的引用,则包括该项目的依赖项." 但是,我发现情况并非如此. 我的问题与我是否可以指定其他一些输出组,以指示包装以包括间接依赖关系? 感谢您的查看. 解决方案 在这种特殊情况下要做的最简单的事情是来自vspackage项目
我正在开发一个Visual Studio软件包,我编写了一些代码,这些代码将在解决方案资源管理器中依赖于另一个文件. 这意味着它为他们提供了与代码范围文件或设计器文件相同的关系,在这些文件或设计器文件中,它们出现在父文件下的plus/minus图标. + MainForm.cs - MainForm.cs MainForm.Designer.cs MainForm.resx 我已经成功编写的代码正确修改了基础项目文件,但是在关闭项目并重新开放之前,更改不会反映在解决方案资源管理器中. 我正在寻找一些可以刷新或重新加载项目的代码,以便在解决方案资源管理器中可见更改. 更多信息... 这是Sudo代码,演示了我创建因文件的机制. IVsBuildPropertyStorage vsBuildPropertyStorage = GetBuildPropertyStorage(); vsBuildPropertyStorage.SetIte
Visual Studio 2010(和较新版本)在"文件">" Open"菜单中具有转换命令.我认为这是将自定义项目转换器集成到IDE的正确位置. 此菜单命令显示一个对话框,用户可以在其中选择一个转换器... 我想知道包装如何提供转换器,该转换器出现在该对话框中. 解决方案 没有记录在IMHO的文献(至少我在任何地方都找不到).它基于位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE中的名为convert.dir的文件的内容(对于Visual Studio 2010).此文件可能不存在,或者其大小可能为0. 定义时,它包含一条线列表,每行与转换器相对应.线格式为5个值,由" |"隔开.角色,这样; relative path to .vsz|relative icon path|localized name|localized description|priority 作
IM在单独的解决方案中在几个独立的视觉工作室扩展方面工作.当我打开其中一个并在调试器中启动实验实例时,其他解决方案(不打开)的其他扩展也会加载.必须有一种方法只能一次在实验实例中启动一个扩展程序(尤其是您当前正在工作的一个),对 解决方案 不是真的.当您在VS中构建和运行扩展项目时,实际上将部署到VS的实验实例,但是当您完成调试/运行时,它们并没有卸载. 最好的选择是使用脚本重置VS SDK提供的实验实例.不幸的是,每次在解决方案之间切换时,您都必须这样做. 在开始菜单中查看: Microsoft Visual Studio 2010 SDK\Tools\Reset the Microsoft Visual Studio 2010 Experimental instance.lnk 其他解决方案 您实际上可以使用" Rootsuffix"参数的不同任意值创建尽可能多的实验实例(在注册表中会创建多个独立的基础键),但是我不确定它有多容易是为了配置VSSDK
在我的编辑器扩展程序中,我使用自定义分类格式作为关键字,标识符等.当然,我可以使用默认格式,因为随后将根据所选主题更改颜色(语法突出显示). 由于我的自定义编辑器还需要其他分类类型(例如标点符号类型),因此当用户配置另一个主题时,这些类型的颜色不会更改(例如,从Dark切换到Blue主题) .我想知道如何提供特定于主题的格式. 解决方案 我发现支持多种配色方案(主题)的最佳方法是将 themechanged 事件,然后相应地更新您的分类类型.在可能的情况下,我从类似于我的自定义格式的预定义的VS格式中更新自定义颜色(例如,使用标准vs vs 关键字颜色在我的自定义关键字格式上设置默认值),因为我知道这些颜色会可能会通过用户应用的任何自定义主题维护. The Visual F# Power Tools use this方法,我从中发现了这一点答案.
我已经创建了一个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软件包工作.我通过创建一个小型控制台应用程序解决了它,该应用程序由包装组件引用.我在控制台应用程序中添
右键单击Visual Studio解决方案Explorer时,如何添加添加菜单项的子菜单? 我必须添加一个子菜单项,该项将显示为n右键单击Visual Studio解决方案,然后移动到该菜单中的添加选项. 我正在尝试使用.VSCT(VS软件包).请帮助我提出宝贵的建议 解决方案 当然,有类似的问题,但这似乎是一种特殊情况... 通常,您需要知道要扩展的菜单命令和软件包ID.我通常通过在注册表中启用EnableVSIPLogging选项,如本文所述: 启用了EnableVSIPLogging选项后,您可以通过单击菜单项(或与命令互连的任何其他UI元素)显示所需的信息> shift .这将显示一个包含软件包GUID和命令/菜单ID的消息框; ctrl + c 将显示的菜单或命令数据复制到剪贴板,btw.如果您对菜单数据感兴趣(如果是上下文菜单,请按 ctrl + shift> shift 在悬停在项目之前). 这就是我在机器上得到的... -------
我假设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