PrivateObjectExtensions 更新とNuGetで公開

ソースコードをコピペして回るのだるくなったのでdll配布するためNuGetで公開。使ってみてね!

www.nuget.org

cactuaroid.hatenablog.com

さくっとdll作って終わりかと思いきや、思わぬ伏兵がいた。元々Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllのPrivateObject / PrivateTypeを拡張していたが、試しにVS2017でユニットテストプロジェクト作ってみたらこのdllが参照されておらず、代わりにMSTest.TestFrameworkのMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions.dllの中にいた。おそらく過去のVisual Studioで作ったユニットテストプロジェクトではMSTest V1として前者が使われていて、VS2017ではMSTest V2として後者が使われるように変更されたのだと思う。

困るのが、拡張メソッドを提供しているこのライブラリの依存先をどうすればいいのか問題。1つのソリューション中でも、ユニットテストプロジェクトの作成時期によってどちらを使っているかは分かれるが、それに応じてdllを分けるようなことも面倒なので避けたい。

幸いPrivateObject / PrivateType自体や名前空間は同じようなので、MSTest V1/2どちらにも依存せずに実行時に型を探すことで解決した。