web-dev-qa-db-ja.com

Visual Studioのカスタム拡張機能はどこにインストールされますか?

Visual Studioのカスタム拡張機能はどこにインストールされますか? ExtensionManager.GetInstalledExtensions()を使用してパスを取得できることはわかっていますが、見つかったパスはどれも私の拡張機能に対応していないようです。

39
Yituo

拡張機能(VSIXとして展開されている場合)は、ユーザーのプロファイルにインストールされます。各拡張機能は、たとえば次のようなランダムな名前のフォルダーにインストールされます。

%LocalAppData%\Microsoft\VisualStudio\12.0\Extensions\s5lxc0ne.1kp

実行時にパッケージのインストールパスを取得する場合は、Packageクラスを定義するアセンブリからその情報を取得できます。

static string GetAssemblyLocalPathFrom(Type type)
{
    string codebase = type.Assembly.CodeBase;
    var uri = new Uri(codebase, UriKind.Absolute);
    return uri.LocalPath;
}

...

string installationPath = GetAssemblyLocalPathFrom(typeof(MyPackage));
55
Matze

1-パッケージを見つける...パッケージがMyExtensionPackageであるとします。

public sealed class MyExtensionPackage : Package
{
     //...
}

public static string GetExtensionInstallationDirectoryOrNull()
{
    try
    {
        var uri = new Uri(typeof(MyExtensionPackage).Assembly.CodeBase, UriKind.Absolute);
        return Path.GetDirectoryName(uri.LocalPath);
    }
    catch 
    {
        return null;
    }
}
1
Alper Ebicoglu