Получение пути расширения VS2010? - PullRequest
2 голосов
/ 26 января 2011

Я написал небольшое расширение для VS2010 (файл vsix), внутри vsix есть двоичный файл, который вызывается расширением.

Я пытаюсь открыть файл следующим образом:

ProcessStartInfo startInfo = new ProcessStartInfo
                                             {
                                                 FileName = @".\Binaries\TFPT.exe"}

Что отлично работает, если я все отлаживаю.Но если я его установлю, я получаю сообщение об ошибке «файл не найден».Двоичные файлы установлены правильно.

Поэтому я подумал, что пытаюсь получить полный путь к двоичным файлам.Но как я могу получить путь?Все приложения. Путь Информация не указывает на правильный путь.Есть ли способ получить путь к каталогу расширений?

Путь примерно такой: C: \ Users [username.domain] \ AppData \ Local \ Microsoft \ VisualStudio \ 10.0 \ Extensions [Company] [ExtensionName] \ 1.0

Есть идеи, не собрав их вручную?

Ответы [ 2 ]

4 голосов
/ 26 января 2011

Как насчет получения пути из текущей исполняемой сборки и использования Path.Combine () с оставшимся относительным сегментом пути?

Примечание: Этот фрагмент кода взят из SO ответа .

private static string RetrieveAssemblyDirectory()
{
   string codeBase = Assembly.GetExecutingAssembly().CodeBase;
   var uri = new UriBuilder(codeBase);
   string path = Uri.UnescapeDataString(uri.Path);
   return Path.GetDirectoryName(path);
}
1 голос
/ 28 сентября 2012

Вы можете получить этот путь, спрашивая ваш путь установки расширения к Visual Studio:

var serviceProvider = [YourPackageObject] as IServiceProvider;
var manager = serviceProvider.GetService(typeof(SVsExtensionManager)) as IVsExtensionManager;
foreach (IInstalledExtension extension in manager.GetInstalledExtensions())
    if(extension.Header.Name == [MyExtensionName])
        return extension.InstallPath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...