我正在对从模板创建项目的 Visual Studio 向导进行更改,并且需要将程序集的引用添加到该项目中,该项目也位于扩展目录中。所以我需要设置 <hintpath>
.
我一直无法弄清楚正在运行的 VS 扩展如何发现它的扩展目录,它是这样的目录名称:
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\myCompany\myExtension
使用
System.Reflection.Assembly.GetExecutingAssembly().CodeBase
产量:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\myCompany.myExtension\v4.0_1.0.0.0__936015a19c3638eb\myCompany.myExtension.dll"
不幸的是,没有帮助。使用
GetCallingAssembly()
也好不到哪里去——它指向 MSIL_GAC 中的另一个目录。是否有返回此信息的 Visual Studio 界面?我一直无法找到它。
如果这是不可能的,是否至少可以确定扩展是在实验性实例还是非实验性实例中运行?我可以使用该信息来定位扩展目录。
最佳答案
也许看看 IInstalledExtension.InstallPath
.您可以获得 IInstalledExtension
通过 IVsExtensionManager
.
不幸的是,评论中的信息表明这不是正确的做事方式:
Although this API supports the Extension Manager infrastructure, we recommend that you do not use it because it is subject to change.
编辑:这是代码:
static IVsExtensionManager GetExtensionManager()
{
return myPackage.GetService(System.typeof(IVsExtensionManager)) as IVsExtensionManager;
}
static IInstalledExtension GetExtension(string identifier)
{
return GetExtensionManager().GetInstalledExtension(identifier);
}
static string GetExtensionDirectory(string identifier)
{
return GetExtension(identifier).InstallPath;
}
string
identifier
是您在扩展程序的“ID”字段中输入的任何内容 source.extension.vsixmanifest
文件。它默认为包 GUID。
关于visual-studio - 查找 Visual Studio 2010 扩展的主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762062/