从带有自定义对话框

时间:2015-10-28 15:54:14

标签: visual-studio visual-studio-extensions vsix

我创建了一个使用引用程序集的Visual Studio 2013扩展。这些程序集由vsix安装到程序包文件夹的子文件夹中。 我还将此子文件夹的ProvideBindingPath属性添加到.pkgdef文件中。注册表(HKCU\Software\Microsoft\VisualStudio\12.0_config\BindingPaths\{PACKAGEGUID})使用正确的vsix安装路径进行更新。

所以MyExtension.pkgdef看起来像那样:

...
[$RootKey$\InstalledProducts\MyPackage]
@="#110"
"Package"="{f9c9068e-d551-49b1-b3c5-ffaff2ad6398}"
"PID"="3.0.0.5"
"ProductDetails"="#112"
"LogoID"="#400"
[$RootKey$\BindingPaths\{F9C9068E-D551-49B1-B3C5-FFAFF2AD6398}]
"$PackageFolder$\\LibsV3"=""
[$RootKey$\BindingPaths\{F9C9068E-D551-49B1-B3C5-FFAFF2AD6398}]
"$PackageFolder$"=""
...

这是extension.vsixmanifest的样子

<PackageManifest>
 <Metadata>
    <Identity Id="F9C9068E-D551-49B1-B3C5-FFAFF2AD6398" Version="3.0.0.5" Language="en-US" Publisher="kmavize" />
     ...
  <Assets>
    <Asset Type="Microsoft.VisualStudio.VsPackage" Path="MyExtension.pkgdef" />
    <Asset Type="Microsoft.VisualStudio.Assembly" Path="MyEditor3.dll" AssemblyName="MyEditor3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=5555555555555555" />
    <Asset Type="Microsoft.VisualStudio.Assembly" Path="LibsV3\MyRefAssembly.dll" AssemblyName="MyRefAssembly, Version=3.0.0.0, Culture=neutral, PublicKeyToken=5555555555555555" />
    ...
  </Assets>
</PackageManifest>

当我的自定义编辑器加载时,我得到一个异常,即无法找到引用的程序集(LibsV3文件夹中的程序集)。

我确实将这些引用的程序集放在LibsV3子文件夹中,这样我的T4模板(也是我的扩展程序的一部分)能够区分当前版本(V3)程序集和旧版本程序集中使用的相同名称一个不同的扩展(我可以同时安装)。

也许有另一种方法来解决我的T4模板的初始问题,所以我没有在程序集中找不到异常...

1 个答案:

答案 0 :(得分:1)

正如Jason所说,我刚刚在新的注册表项下添加了第二条路径,但它确实有效。

所以我的pkgdef现在看起来像那样:

...
[$RootKey$\InstalledProducts\MyPackage]
@="#110"
"Package"="{f9c9068e-d551-49b1-b3c5-ffaff2ad6398}"
"PID"="3.0.0.5"
"ProductDetails"="#112"
"LogoID"="#400"
[$RootKey$\BindingPaths\{16766769-9969-4A46-A76B-76698F6374F2}]
"$PackageFolder$\\LibsV3"=""
[$RootKey$\BindingPaths\{F9C9068E-D551-49B1-B3C5-FFAFF2AD6398}]
"$PackageFolder$"=""
...