问题标签 [vsix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5853 浏览

visual-studio - 如何在 Visual Studio 2010 中实现 vsix 扩展的配置数据?

我目前正在实现一个 vsix 扩展工具窗口,它将很快需要一个数据库连接字符串来查询一些数据以在工具窗口中显示给开发人员。我想让这个连接字符串由开发人员配置。由于开发人员不太可能更改配置设置,因此通常一个文件就足够了。

是否可以只使用与 sln 文件位于同一文件夹中的 app.config 文件,如果可以,我必须使用一些自定义配置设置来包装文件吗?NuGet 似乎实现了这种方法,但我不完全了解内部架构以了解如何使用配置文件。

我也很感激任何替代方法。

编辑:

我已经意识到配置存储将提供的动态数据必须是特定于解决方案的,以便一个解决方案中使用的工具窗口可以使用与另一个解决方案不同的属性。我想一种可能性是使用 .settings 文件来存储单个配置文件的位置,该文​​件本身存储与不同解决方案相关的信息。

0 投票
1 回答
2450 浏览

visual-studio-2010 - 为新的 Castle Windsor 容器调用 ServiceLocator.SetLocatorProvider 会导致 VSIX 包中的 IServiceProvider 冲突

我在 VS 2010 中有一个基本的 vsix 包项目,并且有一个从 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase 派生的简单 ServiceLocator,我在从 Package 派生的类的 Initialize 覆盖中注册:

问题是由于某种原因,容器被要求解析我一无所知的类型。我什至还没有为 ServiceLocator.Current 实现任何代码,但解析的调用仍在执行。

第一个解析类型是 System.IServiceProvider ,这让我觉得容器在某处发生了一些冲突。如果要求 IServiceProvider,我暂时将一些代码添加到定位器的解析覆盖以返回 null。外部代码,无论它是什么,似乎都不介意我不返回一个有效的实例,但随后要求解析来解析一些 VSCommands 类型。

所以,我认为完全有可能在同一个 appdomain 中运行的 2 个单独的组件都可以使用 ServiceLocator 注册一个容器,从而导致相互冲突。我不知道 VSCommands 是否正在使用 ServiceLocator,但从 VS 中删除此扩展程序可以解决问题。

由于我无法控制任何其他第 3 方扩展实施者及其可能使用的 ServiceLocator,是否可以以某种方式将其隔离,以便其他扩展不会调用我的容器?

问候,

标记

0 投票
1 回答
93 浏览

visual-studio-2010 - 删除无法卸载的扩展

我在 VS 2010 中安装了一个扩展,但没有选项可以从扩展管理器中卸载它或添加/删除程序(如果它在 msi 中,不记得了)。加载项管理器为我提供了禁用扩展的选项,但是当我重新启动 VS2010 时它仍然出现(顺便说一句,总是在管理员模式下运行)。我还查看了 VisualStudio/Extensions 下的本地文件夹。

我已经在注册表中检查了这个扩展的条目,但也找不到任何东西。我能做什么(除了重新安装VS2010)?

谢谢

0 投票
1 回答
549 浏览

c# - 如何通过 VSIX 安装程序安装 xsd?

Visual Studio 使用 xsd 文件为与命名空间匹配的 xml 文件提供智能感知。我已经创建了自定义 xml 架构,并且我想在用户编辑包含我的命名空间的那种类型的文档时应用该架构。我可以手动将我的 xsd 保存在某个地方,并且可以正确获取智能感知。但我想将此架构与 VSIX 安装程序一起部署,以便自动应用它。

我需要使用 VSIX 进行设置,我知道要安装到哪个文件夹,但我是 VSIX 新手,如果有办法可以将内容“XSD”安装到特定文件夹,我就完成了。

0 投票
2 回答
4690 浏览

visual-studio-2010 - How can I install a VSIX package automatically, with WIX?

I've got a WIX installation project for my application. As part of my solution I have a VSIX extension, that I want to install on the customer's Visual Studio.

What I don't know, is how to get WIX to automatically initiate the VSIX importer.

I tried following the advice on MSDN (How to: Prepare Extensions for Windows Installer Deployment as well as Installing a VSIX as part of a Larger installation), to no avail. Neither included guidance for WIX projects.

Any help will be appreciated.

0 投票
2 回答
2608 浏览

visual-studio-2010 - 安装时如何自动启用 VSIX 扩展?

我创建了一个 VSIX 包,我通过 WIX 生成的 MSI 安装它。

但是,当我安装它并在 VS2010 中查看它时,在Tools > Extension Manager菜单中,它是[Disabled],我需要手动启用它。

我怎样才能避免这种情况?

** 编辑 **
这就是我所做的:
我尝试添加从注册表中捕获 VSInstallDir,如下所示:

我在 target-dir 下添加了这样的目录结构:

我在安装文件夹中的组件中添加了一个 CopyFile 元素,如下所示:

我在清单中添加了真正的元素。

当我这样做时,没有安装扩展。

任何想法为什么?

0 投票
1 回答
824 浏览

visual-studio-2010 - VSIX Flavored 项目自定义 .target 文件导入问题

我有一个 VSIX 包,其中包含几个基于 XML 的自定义设计器。这个包有一个特殊的项目系统,我在其中使用一些自定义构建任务在构建时自动生成代码。

我必须面对的第一个挑战是在我的项目模板中导入 .targets 文件。我无法在项目模板中提供 .targets 文件的完全限定路径,因为我的包版本发生了变化,这使得 vsix 安装程序将其放置在目标计算机上的版本化位置中。我可以解决的方法是添加一个带有包根路径的用户环境变量,然后在项目模板中引用这个环境变量来导入 .targets 文件。它按预期工作,但需要注意。

现在需要注意的是如何在 VSIX 部署过程中创建此环境变量。我尝试使用派生自RegistrationAttribute. 我覆盖了 Register 方法来运行Environment.SetEnvironmentVariable(),它仅在我在开发盒上运行项目时才有效。显然,VSIXInstall.exe 并不关心在安装过程中运行属性寄存器。

如果有人可以提出解决此问题的方法,那就太好了。我的时间不多了,已经尝试了很多事情但没有成功:(

0 投票
2 回答
1381 浏览

c# - VSIX 中一个令人讨厌的 COM 互操作问题

一段时间以来,我在 Visual Studio 2010 的 VSIX 包中观察到间歇性 COM 问题。尝试订阅 IDE 的基于 COM 的事件接收器之一随机引发以下错误:

“无法使用已与其底层 RCW 分离的 COM 对象”

一个重现案例归结为这段代码(显然必须在 VSIX 中使用):

我从网上可以找到的许多类似问题的描述中了解到可能的原因。它基本上是运行时可调用包装器和 GC 在 COM 互操作期间交互方式的副作用。这是一个类似问题的链接,并附有解释。

我对这个解释很好,特别是因为它提出了一个简单的解决方法 - 将事件接收器引用存储在一个字段中,以防止它被过早地 GC'ed。事实上,许多人似乎已经通过这种方式解决了他们的问题。

困扰我的是它在我的情况下不起作用。我真的很困惑为什么。如您所见,我已经将所有对象引用存储在字段中以防万一。然而错误仍然发生。我尝试在 ctor 末尾使用调用更加明确GC.KeepAlive(),但无济于事。还有什么事情要做吗?

如果没有解决方案,我的 VSIX 会随机加载失败,给用户留下一个选项:重新启动 Visual Studio 并希望下次不会发生这种情况。

任何帮助将不胜感激!

0 投票
3 回答
2920 浏览

vsix - 如何在扩展中的 Visual Studio 2010 中打开 tfs 工作项?

我正在开发一个 VS 2010 扩展,我想知道是否有办法在 Team Explorer 工作项编辑器中打开一个工作项?

我应该调用什么代码来完成这个?我一无所知。

0 投票
0 回答
278 浏览

visual-studio-2010 - 将属性页添加到项目属性而不实现项目子类型

我正在开发一个 Visual Studio 2010 包。我的包需要在项目属性中添加一个新选项卡。

我在添加新选项卡时可以找到的所有示例都通过实现项目风格或子类型来添加选项卡。但是,我需要在不创建新项目风格的情况下添加选项卡。我知道这一定是可能的,因为其他包也在这样做(例如,当您安装 Code Contracts 时,您会获得一个新的 Code Contracts 选项卡,并且 Code Contracts 包不会修改项目类型/添加新的据我所知,子类型)。

如何在不实现新项目风格的情况下从 Visual Studio 2010 包中向项目属性添加选项卡?

谢谢, 马蒂亚斯