煙と消えるその前に

一服してるうちに忘れる、自分のための備忘録。とかとか

VS+C#:1プロジェクト内で同一ライブラリの複数バージョン利用する

なぜか最近C#と付き合うことになった僕です。
WindowsもVisualStudioも馴染みがない僕です。
これまで主にvimを使っていたんですが、VisualStudio(使い慣れたらたぶん)便利ですね!さすがIDEって感じ。
で、参照の追加でMvvmLightToolKitを入れたんですが、もし複数バージョンを同時に使いたくなったらどうするんだろ?と興味本位で調べてみました

複数バージョンのアセンブリをプロジェクトの参照に追加する

仮にMvvmLightToolKit 5.2と5.3を入れたいとすると、以下の感じでできました。

  • 5.3はNuGetで普通にインストール
  • 5.2はアセンブリをDLしてインストール

- こちらからDLしてMVVM Light Toolkit - Home
- vsixをunzipして、さらに中身のpackageファイルもunzipするとdllが出てくる
- 出てきたdllをGalaSoft.MvvmLight52.dllにrenameしておく
- dllのファイル名が5.3と同一になっているため、参照の追加でエラーになったため
- dllをVSの参照の追加から追加する

ソースコード内で両バージョンのアセンブリを利用する

以下のような感じでaliasを張ってやることで解決しました

- 例えば、5.2系の方のアセンブリにMvvmLight52という名前をつけます。

  • 利用するコードは以下のような感じでいけました。
extern alias MvvmLight52;
using GalaSoft.MvvmLight;

namespace MyAPP
{
    // 5.2のViewModelBaseを利用
    class MyClass : MvvmLight52.GalaSoft.MvvmLight.ViewModelBase
    {

    }

    // 5.3のViewModelBaseを利用
    class MyClass2 : ViewModelBase
    {

    }
}