2011-01-26 49 views
2

我寫了一個VS2010的小擴展(vsix文件),在vsix中是一個二進制文件,它被擴展名調用。接收VS2010擴展的路徑?

我嘗試打開該文件是這樣的:

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

如果我調試一切工作正常。但是,如果我安裝它,我會得到一個「文件未找到」的錯誤。二進制文件安裝正確。

所以我想我嘗試獲取二進制文件的完整路徑。但我怎麼能找到路徑?全部申請。 路徑信息沒有指向正確的路徑。有沒有辦法獲得擴展目錄的路徑?

的路徑是這樣的: C:\用戶[username.domain的] \應用程序數據\本地\微軟\ VisualStudio的\ 10.0 \擴展[公司] [EXTENSIONNAME] \ 1.0

任何想法沒有放在一起用手?

回答

4

如何從當前正在執行的程序集中檢索路徑,並將Path.Combine()與剩餘的相對路徑段一起使用?

注意:這段代碼來自SO answer

private static string RetrieveAssemblyDirectory() 
{ 
    string codeBase = Assembly.GetExecutingAssembly().CodeBase; 
    var uri = new UriBuilder(codeBase); 
    string path = Uri.UnescapeDataString(uri.Path); 
    return Path.GetDirectoryName(path); 
}
+0

THX ......不知道Assembly.GetExecutingAssembly()的,正是我一直在尋找。 – Feroc 2011-01-26 13:44:56

1

你可以得到這條道路要求您輸入分機安裝路徑到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;