VS2015とVS2017の両方で動作するVisual Studio拡張機能(VSIX)があります。 VSIXはMicrosoft.VisualStudio.Data.Framework
に依存している、と私はVS2017で開発していますので、私は私のcsprojに次の行を持っている:複数のVSバージョンでVSIXのアセンブリバージョンを参照する
<Reference
Include="Microsoft.VisualStudio.Data.Framework, Version=15.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
/>
ただし、ユーザーがVS2015での私の拡張機能をインストールしようとすると、彼らは当然例外を取得:
をファイルまたはアセンブリ 'Microsoft.VisualStudio.Data.Framework、Version = 15.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。
両方のVSバージョンを対象とするVSIXでMicrosoft.VisualStudio.Data.Framework
を参照する方法を教えてください。バージョンを15から14に切り替えると、VS2015がインストールされていないため、マシン上にビルドできなくなります(VS2017にインストールするユーザーに問題があると思われます)。
これを行う簡単な方法はありません。サポートされている最低バージョンに対して構築し、devenv.exe.configのbindingRedirectsを信頼して適切なバージョンをロードするか、Visual Studioの各バージョンごとに別々のvsixを構築してください。 – jessehouwing
VS2017にdevenv.exe.configのリダイレクトが付属しているため、以前のバージョンの標準DLLが自動的に読み込まれるようになっていますか?もしそうなら、それはかなり満足のいく解決策です... –
はいそうです。すべてのアセンブリ*が後方互換性があるわけではありません。したがって、これには広範なテストが必要です。 – jessehouwing