ASP.NET Web API プロジェクトと、Web API プロジェクトで ApiControllers をテストする単体テスト プロジェクトがあります。各 TestMethod は、テストする ApiController を次のようにインスタンス化します。
[TestClass]
public class MyTestClass
{
[TestMethod]
public void MyTestMethod()
{
MyApiController controller = new MyApiController();
controller.Configuration = new HttpConfiguration();
// Other configuration steps
IEnumerable<MyObjects> myObjects = controller.Get();
// Assertions
}
}
ローカルでビルドしてテスト エクスプローラーからテストを実行すると、これは問題なく実行されます。ただし、VisualStudio.com の TFS インスタンスで新しいビルドをキューに入れると、すべての単体テストが失敗し、HttpConfiguration ctor から次の例外がスローされます。
MyTestMethod が例外をスローしました: System.MissingMethodException: メソッドが見つかりません: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'.
コールスタックは次のとおりです。
at System.Net.Http.Formatting.JsonContractResolver..ctor(MediaTypeFormatter formatter)
at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
at System.Web.Http.HttpConfiguration.DefaultFormatters()
at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
at System.Web.Http.HttpConfiguration..ctor()
at MyTestClass.MyTestMethod()
標準の .NET 4.5 dll 以外のすべての依存関係は、TeamBuild で使用されるソース管理にチェックインされる nuget パッケージにあります。これは、VisualStudio.com のビルド サーバーを使用するときに依存関係を管理する (私が知っている) 唯一の方法です。
TeamBuild は私が所有するマシンではなくクラウドで実行されているため、これを診断するためのツールはほとんどありません。どんな助けでも大歓迎です。