2008-12-02 5 views
3

У нас есть большое количество решений Visual Studio, которые содержат одни и те же общие 15 проектов, и большинство решений отличаются только веб-приложением.MSBuild: Как я могу заставить ProjectReference искать в другом месте для сборки?

Я пытаюсь объединить все в единую сборку, которая строит общие проекты только один раз, а затем проекты веб-приложений ссылаются на выходные общие сборки.

Я нахожу это, так как веб-проект указывает на общие проекты через элемент ProjectReference> < ProjectReference>, я не могу сказать, что он должен искать в другом месте для сборки внутри моего проекта пользовательской сборки. Я хотел бы использовать что-то подобное:

< MSBuild Projects = "@ (решений)" Цели = "Rebuild" Свойства = "ReferencePath = $ (MyReferencePathFolder)">

но это будет работать только тогда, когда веб-проект ссылается на dll общей сборки через элемент < Reference>. Кажется, что если он не может найти то, на что указывает в < ProjectReference>, он не пытается смотреть в любую папку ReferencePath. Он просто сдался.

+0

Почему бы просто не сбросить все веб-проекты в одно и то же решение? – yfeldblum 2008-12-02 19:51:35

+0

Я пробовал это, но, похоже, он замедляет работу, пытаясь построить все совместные проекты несколько раз. – 2008-12-02 19:57:41

ответ

1

Возможно, вы захотите рассмотреть возможность ссылки на 15 общих сборок из хорошо известного местоположения.

Вы можете создать решение, содержащее 15 проектов, и скопировать вывод в определенную папку. Затем вы можете изменить свои проекты веб-приложений, чтобы ссылаться на сборки, а не на совместные проекты.

То, что вы потеряли с помощью этого метода, - это возможность автоматически перестраивать ваши общие проекты из решения для веб-приложений. Если вы хотите автоматически перестроить 15 сборок при работе над одним из решений для веб-приложений, вы можете добавить шаг предварительного построения в своих решениях для веб-приложений для создания своего нового совместного проекта.