标签: visual-studio-extensions

为Visual Studio IDE编写2010年插件

您好,我想在VS 2010中编写插件.在哪里可以从解决方案资源管理器中选择文件,获取文件属性并显示我在插件项目中创建的对话框或表单?

plugins visual-studio-2010 visual-studio-extensions

1
推荐指数
1
解决办法
2060
查看次数

Visual Studio 2010中的待办事项列表应用程序

VS 2010有任何体面的待办事项列表扩展吗?我喜欢使用ReSharper待办事项和评论正则表达式,但对于一些提醒/任务等我不想在代码中添加注释,特别是如果任务是一般的而不是特定于任何一段代码.尽管如此,VS 2010任务列表对于其他任务来说非常原始且笨重.

visual-studio-addins visual-studio-2010 visual-studio visual-studio-extensions

1
推荐指数
1
解决办法
4107
查看次数

Visual Studio解决方案中的项目名称有时为空

在Visual Studio扩展中,我想获取所有项目及其名称:

var service = (DTE) Package.GetGlobalService(typeof (SDTE));
var projects = service.Solution.Projects;

foreach (Project project in projects)
//....
Run Code Online (Sandbox Code Playgroud)

除了一个小问题外,这种方法很好用,很整洁:项目变量实际上返回了确切的项目数。但是,如果项目的全名位于解决方案的文件夹中,则可能为EMPTY。(我的意思是当项目合并在解决方案的文件夹中时解决方案的结构)

如何正确地获得这些项目?

c# visual-studio visual-studio-extensions

1
推荐指数
1
解决办法
1539
查看次数

Visual Studio 扩展:自定义快速操作

我需要从任何现有的包装类生成自定义类型的包装类。现有的 C# 应用程序在这方面做得很好,但它的使用很烦人,因为它涉及使用正确的文件路径打开应用程序,将生成的文件移动到目标位置,修改命名空间并将其添加到 Visual Studio 解决方案。

我知道可能还有其他解决方案,但我决定要扩展来做到这一点(也是出于教育目的)。目标 IDE 是 Visual Studio 2017,它不需要向后兼容。

为了可用性,最好在关注类名时以某种方式扩展快速操作菜单。应该有可能做到这一点,但我没有找到任何资源。

.net c# visual-studio visual-studio-extensions visual-studio-2017

1
推荐指数
1
解决办法
2376
查看次数

Visual Studio扩展获取项目路径

我正在为Visual Studio 2017编写扩展,扩展可以在项目的上下文菜单中使用(通过右键单击等)

IDM_VS_CTXT_PROJNODE
Run Code Online (Sandbox Code Playgroud)

我的问题是当我进入

private void MenuItemCallback(object sender, EventArgs e)       
Run Code Online (Sandbox Code Playgroud)

我如何获得项目路径?

c# visual-studio-extensions visual-studio-2017

1
推荐指数
1
解决办法
1111
查看次数

如何在 VSIX 扩展中找到打开的文件夹

我想编写一个 VSIX LSP 扩展。我希望它以最简单的方式工作 - 这似乎是使用“打开文件夹”功能来打开代码文件夹,然后做我的事情。

要启动 LSP 服务器,我需要知道打开的文件夹的目录。我如何知道 Visual Studio 是否处于“打开文件夹”模式(如果不是,则不应启动 LSP),以及如何知道该文件夹的路径(以便我可以启动 LSP 服务器)?

我发现https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.shell.interop.ivssolutionevents7?view=visualstudiosdk-2017这似乎很有希望,因为我可以在某些特定文件夹出现时进行注册打开 - 告诉我已使用“打开文件夹”功能的事件可能是完美的 - 如果打开文件夹,则启动该文件夹的 LSP。

vs-extensibility vsix visual-studio-extensions language-server-protocol

1
推荐指数
1
解决办法
413
查看次数

将命令添加到 VisualStudio 的“调试”菜单

我想创建一个 VisualStudio 扩展,将命令添加到“调试”菜单。该模板包含以下行:

<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
Run Code Online (Sandbox Code Playgroud)

它将按钮添加到工具菜单中。遗憾的是,我不知道如何更改该行,以便该按钮出现在“调试”菜单中。

根据此网站https://msdn.microsoft.com/en-us/library/cc826118.aspx,没有调试菜单之类的东西:-/

visual-studio vsix visual-studio-extensions

1
推荐指数
1
解决办法
384
查看次数

为什么 VS2019 将我的扩展标记为已弃用

我不使用 VSIX 进行集成(支持旧的 VS 和 SSMS)。安装程序将所有 dll 放入“程序文件”并将 pkgdef 和清单放入特定文件夹。目前 VS2019 显示我的扩展使用“已弃用的 API”的消息。

带有来自 docs.microsoft.com 的消息的图像,但它是相同的。

在此处输入图片说明

我完成了以下步骤:

  • 我创建了 asyncPackage (现在是空的)。
  • 将 Microsoft.VisualStudio.Component.CoreEditor 添加到 vsixmanifest
  • 使用此处的代码生成了 catalog.json 和 manifest.json

我的包看起来如此(构造函数现在是空的)

    [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
    [InstalledProductRegistration("#110", "#112", "7.1.7", IconResourceID = 115)]
    [ProvideMenuResource("MyMenus.ctmenu", 1)]
    [ProvideAutoLoad(GuidList.ShellInitialized, PackageAutoLoadFlags.BackgroundLoad)]
    [ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string, PackageAutoLoadFlags.BackgroundLoad)]
    [System.Runtime.InteropServices.Guid(GuidList.guidMyPkgString)]
    public sealed class MyPackage : AsyncPackage {
Run Code Online (Sandbox Code Playgroud)

但是 VisualStudio 一次又一次地显示有关已弃用 API 的消息。我错过了什么?VS 在包加载期间检查什么?

编辑:我创建了 AsyncPackage,添加了属性,将集成文件更新到 VsixV3。为什么VS同步加载扩展?

vs-extensibility vsix visual-studio-extensions

1
推荐指数
1
解决办法
1649
查看次数

Visual Studio VSIX 扩展未显示在“工具”菜单中

自 2013 版本以来,我一直在 Visual Studio 中使用我非常喜欢的扩展。该扩展不是由其创建者维护的,但他在 GitHub 上发布了源代码。对于 Visual Studio 的每个新版本,我都会尽力更新扩展,以便它仍然可以工作(我对扩展没有其他经验)。

不幸的是,在 Visual Studio 2019 中,Microsoft 弃用了此扩展严重依赖的库之一(工作项跟踪)。我一直在尝试遵循他们的迁移指南,但它只有几个我可以使用的代码示例(主要涉及查询)。大多数需要转换的代码超出了我的理解范围(例如:WorkItemStore 或 WorkItemCollection)。

我已经能够成功构建/编译项目,但由于上述原因,它有许多关于过时项目的警告(“QueryItem”已过时。有关更多信息,请参阅http://aka.ms/witclientom上的文档)。但是,没有构建错误,我可以安装扩展。

安装后,可以通过扩展 - 管理扩展页面查看(和卸载)扩展,并且可以在帮助 - 关于屏幕中查看有关扩展的信息。但是,扩展应该向“工具”菜单添加两个项目 - 但大多数情况下,它不会。我以某种方式设法让这些项目显示了几次,但在尝试访问它们时会出现异常(通过 Visual Studio 的实验实例或常规实例)。当我停止调试以修复错误,然后卸载、构建并重新安装扩展时,“工具”菜单项再次丢失。我不知道如何找回它们,也不明白如何找出它们丢失的原因 - 可能是由于错误,但调试/实验实例在这里没有帮助,因为它不会中断或显示任何错误。

是否有其他方法可以了解“工具”菜单项未显示的原因?

更新:这是我的扩展的 .vsct 文件的内容。我检查了一下,似乎每个项目都有自己唯一的 ID。

<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!--  This is the file that defines the actual layout and type of the commands.
        It is divided in different sections (e.g. command definition, command
        placement, ...), with each defining a …
Run Code Online (Sandbox Code Playgroud)

visual-studio visual-studio-extensions visual-studio-2019

1
推荐指数
1
解决办法
5460
查看次数

VS2019 自定义模板未显示

我为 VS2019 创建了一个自定义模板,其中包含两个项目。下面是我的 root.vstemplate 文件

<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>Asp.Net Core Template EF Core</Name>
    <Description>Asp.Net Core 3.1 Boilerplate template</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>Asp.Net Core Template EF Core</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>logo.png</Icon>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <ProjectTemplateLink ProjectName="AspNet Core Ef Core">
        src\AspNetCore3EfCoreTemplate\MyTemplate.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="AspNet Core Ef Core Web">
        src\AspNetCore3EfCoreTemplate.Web\MyTemplate.vstemplate
      </ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)

我按照此链接的说明进行操作,但是当我尝试在 VS2019 中创建新项目时未显示我的模板。有谁知道为什么会这样?

visual-studio visual-studio-extensions .net-core visual-studio-2019

1
推荐指数
2
解决办法
6159
查看次数

如何将我的服务注册为全局服务或者如何在我的场景中使用 MEF?

我想创建自己的具有全球知名度的服务。为了实现这一点,我遵循了这个示例解决方案。

一切顺利,我可以在一个类中调用我的服务,该类扩展自 Package 抽象类,如下所示:

public class ClientPackage : Package
{
   private void GetGlobalServiceCallback(object sender, EventArgs args)
   {
      IMyGlobalService service = GetService(typeof(SMyGlobalService)) as IMyGlobalService;
   }
}
Run Code Online (Sandbox Code Playgroud)

因为我在一个包中,所以我可以轻松调用 GetService 并且可以获得我的服务。但是,如果我想从一个不扩展 Package 抽象类的类获取服务,该怎么办?

例如,我有一个类,它实现了 ITagger 接口。如果我想获取此类中的服务,我必须以这种方式使用 Package.GetGlobalService() 方法:

var txtMgr = (IVsTextManager)Package.GetGlobalService(typeof(SVsTextManager));
Run Code Online (Sandbox Code Playgroud)

我尝试使用 Package.GetGlobalServie() 获取自己的服务,但总是得到 null。链接的示例代码不包含我的问题的解决方案。

我可能错过了什么或者我在获得服务时遇到了错误的情况吗?

编辑:

好吧,假设我必须使用 MEF 来获取我的服务,因为我无法使用 Package.GetGlobalService() 获取我的服务。

我有一个包含 2 个项目的解决方案。一种是类库,其中包含这样的接口:

public interface INamesAccessor
{
    IEnumerable<string> GetNames();
}
Run Code Online (Sandbox Code Playgroud)

另一个项目是 VSPackage(与第一个项目有参考),它也实现了我的接口:

[Export(typeof(INamesAccessor))]
public sealed class BitbucketExtensionPackage : Package, INamesAccessor
{
    private IEnumerable<string> _names { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# vsx vsix visual-studio-extensions visual-studio-2013

0
推荐指数
1
解决办法
1343
查看次数

如何获取visual studio 2015编辑器窗口的选定文本?

我想实现一个 Visual Studio 2015 扩展来获取用户在代码编辑器中选择的文本。比我想操纵选定的文本。

在代码编辑器中通过上下文菜单有一个按钮/命令。但我不知道如何获取选定的文本。

我认为,这个解决方案在这里已经过时或者我missunderstand解决方案。

c# visual-studio visual-studio-extensions visual-studio-2015

0
推荐指数
1
解决办法
2029
查看次数