Ссылки на отдельные проекты при настройке Unity? - PullRequest
2 голосов
/ 12 декабря 2011

Я прочитал действительно классный блог о , используя Autofac для полного отделения приложения .Но, как ни старайся (и будучи совершенно новым для всего этого), я просто не мог заставить Autofac превращаться в гель.

Я обратился к Unity из корпоративной библиотеки MS Patterns & Practices Enterprise, и это стало намного лучше,Чтобы сделать вещи излишне трудными для себя, я разделил все свои вещи на проекты как:

  • UnityDi (Консольное приложение)
  • UnityDi.Contracts (Интерфейсы)
  • UntiyDi.Domain (Классы)
  • UnityDi.Repositories (Доступ к данным)
  • UnityDi.Services (Доступ к хранилищу через уровень служб)

Я использовал конфигурацию XMLПонизить Unity:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
    </configSections>
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <assembly name="UnityDi.Contracts" />
        <assembly name="UnityDi.Domain" />
        <assembly name="UnityDi.Services" />
        <assembly name="UnityDi.Repositories" />
        <namespace name="UnityDi.Contracts" />
        <namespace name="UnityDi.Domain" />
        <namespace name="UnityDi.Services" />
        <namespace name="UnityDi.Repositories" />
        <container>
            <register type="IUser" mapTo="User"></register>
            <register type="IUserService" mapTo="UserService"></register>
            <register type="IUserRepository" mapTo="UserRepository"></register>
        </container>
    </unity>
</configuration>

И получил это в работающее приложение, не беспокойтесь:

private static readonly IUnityContainer Container = new UnityContainer();
...
Container.LoadConfiguration();

НО, чтобы сделать это, мне нужна ссылка на все вышеупомянутые проектыиз моего консольного приложения.

Есть ли способ заставить приложение использовать только ссылку на UnityDi. Контракты (интерфейсы)?Тогда приложение хорошо и по-настоящему отделено (правда, кувалдой).

Надеюсь, этого достаточно для объяснения, я совершенно новичок в этом, и я настолько экстремален, чтобы способствовать лучшему обучению.

1 Ответ

1 голос
/ 13 декабря 2011

Я подозреваю, что причина, по которой вам нужны ссылки на проекты, заключается в том, что без них VS не будет копировать сборки в папку bin вашего приложения, когда вы нажмете F5. Как бы это ни было, она не знает, что они тебе нужны!

Проектные ссылки - самое быстрое решение проблемы. Другая вещь, которую вы можете сделать, это добавить шаг после сборки, чтобы скопировать соответствующие библиотеки DLL, чтобы они оказались в нужном каталоге, чтобы вы могли запустить приложение.

...