Ведение ссылок для решений через Subversion - PullRequest
1 голос
/ 12 декабря 2011

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

  • «Общий» проект библиотеки классов, который содержит множество базовых абстрактных классов, таких как «Person» и некоторые вспомогательные классы.

  • Проект библиотеки классов «EmployeeManagement», который содержит такие классы, как Employee: Person, EmployeeAddressList и другие, связанные с управлением сотрудниками.

  • Проект веб-приложения, который ссылается на два вышеупомянутых проекта в качестве уровня представления / веб-формы. то есть "editemployees.aspx.cs" для редактирования информации о существующем сотруднике и т. д.


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

У меня есть следующие вопросы:

  1. почему это происходит?
  2. что я делаю не так? (возможно, порядок моего перемещения в репозитории или порядок его удаления отключен?)
  3. что я могу сделать, чтобы этого не случилось?

Спасибо:)

Ответы [ 3 ]

2 голосов
/ 12 декабря 2011

Скорее всего, ваш макет каталога отличается от вашего коллеги.

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

Btw. в SVN мы фиксируем и обновляем: -)

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

Не зная больше, я бы просмотрел ваши соответствующие файлы .sln и .csproj или .vbproj и убедился, что относительный путь к включенным проектам не перезаписывается каждый раз, когда один из вас фиксирует изменения.

Ниже приведены примеры включенных ссылок на проекты в файлы вашего решения / проекта:

.sln

Project("{6f8415d8-82c0-4e47-8ddd-f3962bb3b518}") = "QuickJoe.Awesome", "QuickJoe.Awesome\QuickJoe.Awesome.csproj", "{e623a940-79ba-4762-af02-84993a2b37b7}"
EndProject
Project("{6f8415d8-82c0-4e47-8ddd-f3962bb3b518}") = "QuickJoe", "..\qjs\QuickJoe\QuickJoe.csproj", "{6754372e-b253-41be-9b83-23cf8bea786f}"
EndProject

.csproj / .vbproj

<ItemGroup>
  <ProjectReference Include="..\..\qjs\QuickJoe\QuickJoe.csproj">
    <Project>{6754372e-b253-41be-9b83-23cf8bea786f}</Project>
    <Name>QuickJoe</Name>
  </ProjectReference>
</ItemGroup>

Еще один хороший совет (если вы этого еще не сделали) - специально исключить файлы .user и .suo. В некоторых случаях они активно вредят при загрузке на другую рабочую станцию.

0 голосов
/ 12 декабря 2011

Если вы используете Visual Studio, рассмотрите возможность размещения вашего решения в верхней части дерева папок, а проекты - под ним.Visual Studio должна затем ссылаться на проекты через $(SolutionDir), одну из своих внутренних переменных.В противном случае отредактируйте решение вручную и сделайте расположение папки / проекта относительно $(SolutionDir), и тогда все должно быть переносимо, независимо от того, где оно было извлечено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...