1

テストプロジェクトでは、依存性注入にCastleWindsorを使用しています。'Repository'クラスの1つにインスタンスを作成しようとしています。「自分のマシンでは正常に動作します」が、TFSでナイトリービルドを実行すると、テストで上記のクラスを読み込めません。

private static readonly WindsorContainer _container = new WindsorContainer(new XmlInterpreter());


    public void MyTestInitialize()
    {
        var testRepository = (IBogusRepository)_container[typeof(IBogusRepository)];

    }

xml構成:

<castle>
    <components>
      <component id="primaryBogusRepository" type="Example2008.Repository.LALALALALA, Example2008.Repository" service="Example2008.Domain.Repository.IBogusRepository, Example2008.Domain" />
      <component id="primaryProductRepository" type="Example2008.Repository.ProductRepository, Example2008.Repository" service="Example2008.Domain.Repository.IProductRepository, Example2008.Domain" />
    </components>
  </castle>

新しいビルドをキューに入れると、次のメッセージが表示されます。

クラスExample2008.Test.ActiveProductRepositoryTestのインスタンスを作成できません。エラー:System.Configuration.ConfigurationException:タイプ名Example2008.Repository.LALALALALA、Example2008.Repositoryが見つかりませんでした。

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType(String typeName)Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(IConfiguration [] configuration、IWindsorContainer container)Castle.Windsor.Installer.DefaultComponentInstaller.SetUp(IWindsorContainer container、IConfigurationStore store)Castle.Windsor .WindsorContainer.RunInstaller()Castle.Windsor.WindsorContainer..ctor(IConfigurationInterpreterinterpreter)Example2008.Test.ActiveProductRepositoryTest..cctor()in d:\ Code_Temp \ Example Project Nightly \ Sources \ Example2008.Test \ ProductRepositoryTest.cs:line 19

このメッセージから、私の構成は正しいようです(具象クラス「LALALALALA」をインスタンス化したいことがわかるので、xml構成は明らかに正しく赤くなっています)

依存関係も正しく設定されていると思います(ソリューションをクリーンアップして再構築しても、ローカルで機能するため)。

何かご意見は?

(ちなみに、VS2008、TFS 2008.Net 3.5、Castle 1.03を使用)

4

2 に答える 2

0

それは興味深い。私はあなたの問題を助けるかもしれないこのブログ投稿を見つけました。 MSTestはそれを作業ディレクトリとして使用しているようですが、控えめに言っても面倒です。ブログ投稿には、一貫した結果が得られるようにディレクトリを変更する方法が示されています。また、よりエレガントなソリューションが存在するかどうかを確認するために、グーグルを実行します。

于 2008-09-25T12:45:33.310 に答える
0

リポジトリの実装を保持するアセンブリが bin ディレクトリ (またはビルド用の実行ディレクトリがある場所) から欠落しているようです。

最初に、アセンブリがビルド サーバーの実行ディレクトリに存在するかどうかを確認します。

存在する場合は、アセンブリのバージョンが正しいこと、つまり同じ名前空間にリポジトリ実装があることなどを確認します。

ビルド サーバーが、VS が実行/ビルドしている場所以外の場所でオブジェクトを実行/ビルドしている可能性があります。

于 2008-09-19T12:31:17.480 に答える