Onion Architecture とWindows Forms UI レイヤーを組み合わせているときに問題が発生しました。問題は、IoC 構成メソッドがヒットしないことです。IoC セットアップは、依存関係解決アセンブリで行われます。
Project.Core
Project.Infrastructure
Project.UI <- Startup project
Project.DependencyResolution <- IoC configuration
そして、UI レイヤーが .NET 以外に依存しないようにしたいと思いProject.Core
ます。
このアーキテクチャを使用した Web プロジェクトでは、WebActivatorEx と OutputTo を使用して IoC をブートストラップしました。私はよく知っているので、ここでも同じものを使用することにしましたが、期待どおりに動作しません。私が問題なのか Windows フォームが問題なのかわからないので、私のセットアップは次のとおりです。
Project.DependencyResolution で:
[assembly: WebActivatorEx.PreApplicationStartMethod(
typeof (IocConfig), "RegisterDependencies")]
public class IocConfig
{
public static void RegisterDependencies() {
// this is never executed
}
}
OutputTo の OutputTargets.txt:
..\Project.UI\bin
Project.UI で:
static class Program
{
static void Main() {
WebActivatorEx.ActivationManager.RunPreStartMethods();
Application.Run(...);
}
}
OutputToDependencyResolution's
は DLL ファイルをUi's
bin に正しくコピーしますが、IocConfig.RegisterDependencies
実行されません。
では、Windows フォーム プロジェクトがスタートアップ プロジェクトである独自のアセンブリから IoC をセットアップするにはどうすればよいでしょうか。