2012-11-06 3 views
2

У меня есть проект «ProjA», который завершает ссылки на несколько других проектов и некоторые сборки «плагинов». Все эти ссылки имеют параметр «Копировать локальный» в «Истина». Обратите внимание, что код в сборках плагинов (которые являются ссылками на проекты) напрямую не упоминаются в «ProjA», а загружается и находится через DI/Ninject. (Так что я использую эти ссылки проекта как способ получения сборщиков плагинов в выходной папке, см. Ниже почему)Ссылка на другой проект с копией Local по ссылке

У меня также есть проект «ProjB», который ссылается на ProjA. Он вызывает код ProjA, который должен делать это, используя связанные плагины.

Проблема в том, что она не работает. Модули плагинов не копируются из выходной папки ProjA (которые они «скопированы локально») в выходную папку ProjB. Таким образом, Ninject не загружает их, и это не удается.

Так что мои два вопроса:

  • Если я продиктовал VS/MSBuild, что ProjA относится к проектам P1, P2, P3, P4 и установить копию локального истина - то почему бы это предположить только для сборки ProjA требуется сборка основного вывода? Могу ли я заставить его думать иначе?
  • Я предполагаю, что добавление копии локальных ссылок на сборки плагинов в качестве способа распознавания зависимостей сборки между плагинами и проектом с их использованием (в настоящее время это фиксированный набор плагинов, следовательно, этот маршрут) - это не идеально. Затем я думаю, что добавление модулей плагинов в качестве «Контента» в проект будет работать, но тогда у меня есть две проблемы: 1) контроль источника TFS; для проектов плагинов требуется доступная для записи цель для создания, предположительно - файлы содержимого будут «проверены» и 2) некоторые из плагинов имеют собственный контент: со ссылками мне не нужно беспокоиться о том, что что-то не хватает. Переходя по контуру Content, мне нужно сослаться на выходную папку сборки другого проекта, включая все содержимое, но не PDB .. кажется еще более взломанным!

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

Есть ли что-то, что мне не хватает, идеи вообще? Если скопировать местную привязку по проектам, она идеально подойдет.

+0

Выполнение еще нескольких исследований, похоже, что создание одной выходной папки является ключевым. Я делаю это для «другого» решения, хотя тот, где в основном находятся плагины. Итак, как я могу получить проекты для создания в * новую * 'единственную' выходную папку для этого решения? –

ответ

0

Невозможно создать Visual Studio или msbuild.

-2

Копировать local = true является источником всех зловредностей VS. Ну, по крайней мере, по крайней мере.

Я бы просто сказал - не используйте его. Имейте один хороший outputdir, например T: \ Bin, и скопируйте все, что вам нужно, используя скрипты post build для этого каталога. И бегите оттуда. Не просто доверяйте VS и ходите, как слепые мыши.

Вы также можете рассмотреть возможность использования GAC.

+0

Пропустил мой комментарий о том, почему я не могу использовать одну папку вывода? –

+0

.. и сценарии пост-сборки для проектов не будут работать, поскольку проекты находятся в нескольких решениях? –

+0

Оба комментария мне неясны.Post builds - это просто скрипты, которые нужно выполнить при успешной сборке. Они могут или не могут использовать параметры, специфичные для проекта S.A $ {ProjectDir}. – avishayp

Смежные вопросы