如何在 VSIX 扩展中部署 "extension method"?
How to deploy "extension method" within a VSIX extension?
由于措辞("extension" 和 "method" 的许多含义),我完全无法在互联网上找到 任何 关于我的问题的信息.所以我在这里问:
是否可以使用 VSIX 扩展部署 "extension methods"?
澄清:
"extension method" 我的意思是
public static string SomextExtension(this string s, string p) {
retrun s + p;
}
VSIX 扩展是指自定义扩展,它通过
安装
SomeCoolExtension.vsix
目标是:
用户安装 VSIX,获得一些功能(在我的例子中主要是自定义代码生成器)并且还可以访问其源代码中的 "Hello".SomeExtension(" World");
。
我慢慢地认为这是不可能的,因为我已经尝试了所有我能想出的方法,并且如开头所述,在 googls 上搜索它几乎是不可能的。
如果真的不可能,我至少很想知道为什么。
所以一个简单的 "no" 可能是一个有效的答案,但如果你能详细说明,那会让我的编码灵魂得到安息:-)
规格:我使用的是 VS2017 和新的 "Visual Studio AsyncPackage",但如果您知道旧版本的答案,我很乐意尝试。
您可以使用这两种方法:
扩展名 (.vsix) 提供了最大的灵活性,因为它可以提供命令(菜单上的按钮、上下文菜单和工具栏),根据用户的需要,这些命令可以 1) 在中插入代码活动文档 2) 添加带有代码或其他资产的文件 3) 添加对扩展可以部署在项目源文件夹中的 Dll 的引用等。此外,它不仅可以按需执行所有操作,还可以自动监视事件和检查是否满足某些条件,例如,创建了一个解决方案,或者加载了一个解决方案,添加了一个项目,它是否已经包含一个代码文件,它是否已经有一个引用等等。不用说,所有这些灵活性来自于一些复杂性。
NuGet包可以将DLL添加到项目的引用或代码文件中,它可以在将NuGet包添加到可以修改项目的项目时执行PowerShell脚本,它可以修改添加新 MSBuild targets/tasks 的构建过程(作为 Microsoft.VSSDK.BuildTools NuGet 包创建 VSIX 扩展的主要示例)。这是在项目安装期间的一次性操作。之后,没有事件,没有命令等,但对于大多数场景来说就简单多了。
由于措辞("extension" 和 "method" 的许多含义),我完全无法在互联网上找到 任何 关于我的问题的信息.所以我在这里问:
是否可以使用 VSIX 扩展部署 "extension methods"?
澄清: "extension method" 我的意思是
public static string SomextExtension(this string s, string p) {
retrun s + p;
}
VSIX 扩展是指自定义扩展,它通过
安装SomeCoolExtension.vsix
目标是:
用户安装 VSIX,获得一些功能(在我的例子中主要是自定义代码生成器)并且还可以访问其源代码中的 "Hello".SomeExtension(" World");
。
我慢慢地认为这是不可能的,因为我已经尝试了所有我能想出的方法,并且如开头所述,在 googls 上搜索它几乎是不可能的。
如果真的不可能,我至少很想知道为什么。 所以一个简单的 "no" 可能是一个有效的答案,但如果你能详细说明,那会让我的编码灵魂得到安息:-)
规格:我使用的是 VS2017 和新的 "Visual Studio AsyncPackage",但如果您知道旧版本的答案,我很乐意尝试。
您可以使用这两种方法:
扩展名 (.vsix) 提供了最大的灵活性,因为它可以提供命令(菜单上的按钮、上下文菜单和工具栏),根据用户的需要,这些命令可以 1) 在中插入代码活动文档 2) 添加带有代码或其他资产的文件 3) 添加对扩展可以部署在项目源文件夹中的 Dll 的引用等。此外,它不仅可以按需执行所有操作,还可以自动监视事件和检查是否满足某些条件,例如,创建了一个解决方案,或者加载了一个解决方案,添加了一个项目,它是否已经包含一个代码文件,它是否已经有一个引用等等。不用说,所有这些灵活性来自于一些复杂性。
NuGet包可以将DLL添加到项目的引用或代码文件中,它可以在将NuGet包添加到可以修改项目的项目时执行PowerShell脚本,它可以修改添加新 MSBuild targets/tasks 的构建过程(作为 Microsoft.VSSDK.BuildTools NuGet 包创建 VSIX 扩展的主要示例)。这是在项目安装期间的一次性操作。之后,没有事件,没有命令等,但对于大多数场景来说就简单多了。