0

我有一个 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 是在云中运行,而不是在我拥有的机器上,所以我几乎没有工具来诊断这个问题。任何帮助将不胜感激。

4

1 回答 1

0

我在标准 .NET 4.5 dll 之外的所有依赖项都在 nuget 包中,这些包已签入源代码管理以供 TeamBuild 使用。

您是否将托管构建控制器配置为指向该自定义程序集,请参见下图,如果是,并且您仍然遇到相同的错误,请尝试在本地构建服务器上重现该案例。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2013-01-31T04:57:00.783 回答