我有一个 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 之外的所有依赖项都在 nuget 包中,这些包已签入源代码管理以供 TeamBuild 使用。这是使用 VisualStudio.com 的构建服务器时管理依赖项的唯一方法(据我所知)。
因为 TeamBuild 是在云中运行,而不是在我拥有的机器上,所以我几乎没有工具来诊断这个问题。任何帮助将不胜感激。