Как поместить проект веб-сайта ASP.NET и проекты библиотеки классов в один файл .sln в Subversion

В моей компании есть несколько библиотек классов, которые мы используем в нескольких проектах веб-сайтов (не в проектах веб-приложений). У проектов веб-сайтов нет файлов .sln, но я уверен, что в своих прошлых исследованиях я читал, что вы можете создать пустое решение и разместить в нем проекты своего веб-сайта и библиотеки классов.

После ответов на мои предыдущие вопросы я двигаюсь именно в этом направлении (немного на основе http://amadiere.com/blog/2009/06/multiple-subversion-projects-in-one-visual-studio-solution-using-svnexternals/):

/websites
    /website1
        /trunk
            /website1
/libraries
    /library1
        /trunk
            /library1
    /library2
        /trunk
            /library2
    /etc...

Затем я планировал использовать svn: externals для копирования / library1, / library2 и так далее в папку working_copy / sites / website1 /.

Я хочу, чтобы члены моей команды могли проверить папку / trunk для website1 и получить файл .sln, / library1 external, / library2 external и т. Д. Я хочу, чтобы этот файл .sln содержал проект веб-сайта website1 и все библиотека внешних проектов. Надеюсь, это будет выглядеть примерно так:

/working_copy
    /websites
        /website1
            /trunk
                /website1
                /library1 (svn:external of libraries/library1/trunk/library1) 
                /library2 (svn:external of libraries/library2/trunk/library2)
                /etc.
                website1.sln

Итак, в конце всего этого цель состоит в том, чтобы мои товарищи по команде проверили ствол, открыли решение, и у всех было одно и то же решение. Когда мы фиксируем, все соответствующим образом передается на подрывную деятельность (код веб-сайта и библиотеки фиксируются в соответствующем месте в репозитории).

Как другие решили эти проблемы? Как я могу создать файл .sln, которым мы с членами моей команды сможем поделиться таким образом?


person JustinP8    schedule 12.03.2010    source источник
comment
Ваш вопрос о том, как создать пустое решение и добавить в него проекты или как организовать структуру решения?   -  person Andrew Bezzub    schedule 13.03.2010
comment
@Andrew: Я хочу знать, как создать файл решения с проектами веб-сайта и библиотеки, который члены моей команды могут открыть после обновления своей рабочей копии. Я также хочу знать, используется ли svn: externals для подобных библиотечных проектов и добавление их в указанное решение является правильным способом получить желаемое конечное поведение.   -  person JustinP8    schedule 13.03.2010


Ответы (2)


Я думаю, что ваш подход к svn-коду и структуре файла решения правильный. Также рекомендуется использовать svn: externals, как вы описали.

Чтобы создать пустое решение, просто выберите Файл-> Создать-> Проект и выберите Другие типы проектов-> Решения Visual Studio-> Пустое решение. После того, как вы его создали, вы можете добавлять в него новые или существующие проекты, используя меню File-> Add.

person Andrew Bezzub    schedule 12.03.2010
comment
Одна небольшая проблема в моем доказательстве концепции заключается в том, что все наши рабочие копии должны иметь одинаковую файловую структуру, поскольку проект веб-сайта имеет путь к файлу с клиентской машины на нем ... он абсолютный, а не относительный. Это правильно? - person JustinP8; 13.03.2010
comment
@ JustinP8: Я не уверен, что понимаю вас - все рабочие копии будут иметь одинаковую файловую структуру - такую ​​же, как в репозитории svn. Какой путь в проекте веб-сайта содержит путь к файлу с клиентской машины? - person Andrew Bezzub; 13.03.2010
comment
Я имел в виду, что все разработчики должны будут установить свою рабочую копию в том же каталоге на своих машинах (то есть C: \ WorkingCopy), потому что Visual Studio использует абсолютные пути к файлам в свойствах проекта. В конечном счете, я хочу знать, как мы все можем поделиться файлом .sln, содержащим один и тот же веб-сайт и проекты библиотеки классов, в репозитории Subversion. - person JustinP8; 15.03.2010

Плохая идея помещать проекты библиотеки в то же решение, что и проект веб-сайта. Оставьте их в собственном растворе. В проекте веб-сайта щелкните проект правой кнопкой мыши в проводнике решений и выберите «Добавить ссылку». укажите место, где вы сохранили код встроенной библиотеки (возможно, в общую папку).

person John Saunders    schedule 12.03.2010
comment
Я не согласен. Это зависит от того, как часто необходимо изменять библиотечные проекты и насколько они близки к разрабатываемому сайту. - person Andrew Bezzub; 13.03.2010
comment
@ Андрей: разве он не сказал, что проекты библиотеки использовались на нескольких веб-сайтах? - person John Saunders; 13.03.2010
comment
теперь я понял вашу точку зрения. Я имел в виду немного другое - теперь у меня есть решение с двумя веб-сайтами и несколькими библиотеками классов, и это довольно удобно, потому что все проекты развиваются довольно быстро. - person Andrew Bezzub; 13.03.2010
comment
@ Андрей: это хорошая структура, пока ваши проекты быстро развиваются. Это может быть проблема со структурой решения, потому что библиотеки действительно хотят находиться в другой части дерева системы управления версиями, чем веб-сайты. Некоторые системы управления версиями / сборки, такие как все проекты в решении, должны находиться в каталоге решения, а это не то место, где вы хотите, чтобы эти файлы были долгосрочными. Однако у OP может быть совершенно другой сценарий. Его библиотечный код может быть стабильным. - person John Saunders; 13.03.2010
comment
К сожалению, у нас пока нет системы сборки. Мы пытаемся улучшить нашу среду, добавляя SVN и, в конечном итоге, NAnt и / MSBuild, CCNET или TeamCity, но для изучения всех этих вещей требуется время, которое у нас не всегда есть. Ссылки на библиотеки создают для нас проблемы, пока мы улучшаем нашу среду. Использование ссылок на проекты наиболее удобно для нас, поскольку позволяет всем разработчикам создавать библиотеки DLL, которые веб-сайт использует локально. Ссылки на BIN были бы лучше, если бы у нас были автоматизированные сборки. - person JustinP8; 15.03.2010