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 以外のすべての依存関係は、TeamBuild で使用されるソース管理にチェックインされる nuget パッケージにあります。これは、VisualStudio.com のビルド サーバーを使用するときに依存関係を管理する (私が知っている) 唯一の方法です。

TeamBuild は私が所有するマシンではなくクラウドで実行されているため、これを診断するためのツールはほとんどありません。どんな助けでも大歓迎です。

4

1 に答える 1

0

標準の.NET4.5dll以外の依存関係はすべて、TeamBuildで使用されるソース管理にチェックインされるnugetパッケージに含まれています。

そのカスタムアセンブリを指すようにホストビルドコントローラーを構成しましたか?次のイメージを参照してください。はい、それでも同じエラーが発生する場合は、ローカルビルドサーバーでケースを再現してみてください。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2013-01-31T04:57:00.783 に答える