2016-03-19 4 views
1

У меня есть решение со следующей структурой:Каталог MEF Каталог

project.Model

project.Builder

project.Unit Тесты

в строитель проекта должен создать модель используя MEF. поэтому в конструкторе класса Builder я хочу, чтобы у него был контейнер для хранения частей, связанных только с построением модели (как разделение проблем).

В настоящее время я использую каталог каталогов следующим образом:

var path = Environment.CurrentDirectory; 
var catalog = new DirectoryCatalog(path + @"\Builder\bin\Debug"); 

так, что в тестовом проекте единицы я могу использовать этот контейнер в письменном виде функции модульных тестов. есть лучший способ сделать контейнер-строитель иметь только DLL-файлы, которые находятся в директории вывода проекта строителя (bin \ debug). Я попытался с помощью:

var directory = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
var catalog = new DirectoryCatalog(directory); 

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

есть ли более правильный путь, чем то, что я сейчас делаю? благодарит заранее.

ответ

0

Я бы предпочел использовать и AssemblyCatalog - и добавьте статическую ссылку из проекта Builder в проект Model, поэтому вы можете избежать всех проблем с папками - сканирование всей папки, изменение структуры каталогов во время развертывания, различные версии сборки в том же папка и т. д. Код будет выглядеть примерно как

var catalog = new AssemblyCatalog(typeof(YourModelType).Assembly); 
Смежные вопросы