NuGetパッケージを作成する際、nuspecのframeworkAssemblies/frameworkAssemblyに記述を行うことで、GACに登録されている任意のアセンブリへの参照設定を追加することができます。
(See:Nuspec Reference:Specifying Framework Assembly References (GAC))
パッケージを取り込んだプロジェクトではこのように参照が追加されます。
さて、ここからが今回の本題。
GACのアセンブリの中には、同じ名前でバージョンが異なるものがインストールされている場合があります。例えばこんな感じ。
この例ではMicrosoft.TeamFoundation.Clientは、バージョン「10.0.0.0」と「11.0.0.0」の二つのバージョンがGACにインストールされているのが解ります*1。
このとき、先ほどの例と同様『<frameworkAssembly assemblyName="Microsoft.TeamFoundation.Client" />』と記述するとどうなるか。
答えはこの通り。どうやら自動的に最新の方が参照されるようです。
では、例えば『必ず10.0.0.0のほうを参照させたい』といったように、参照追加するアセンブリバージョンを指定したい場合はどうすればいいでしょうか*2。
公式のドキュメントを見ても該当する記述が見つけられずちょっと途方に暮れかけたのですが、ダメもとで試してみたところ、assemblyName属性の中にアセンブリ名に加え、カンマ区切りでVersion="x.x.x.x"の形でバージョンを記述*3することで実現できることが解りました。先の例だと、『<frameworkAssembly assemblyName="Microsoft.TeamFoundation.Client, Version=10.0.0.0" />』となります。