Почему отсутствует <SccProjectName> в файле проекта, причина "Файл проекта не связан с контролем версий"
У меня была очень неприятная проблема, я нашел решение, но я хотел бы спросить вас, почему он так себя ведет...
Я использую Visual Studio 2012 с TFS 2012. Все было хорошо, но однажды я обнаружил проблему. Когда я добавляю новый проект в свое решение, я всегда получаю это сообщение каждый раз, когда снова открываю решение:
Этот файл проекта... не связан с контролем версий, но решение содержит для него информацию о привязке контроля версий. Вы хотите...
Что бы я ни делал, у меня все еще есть это сообщение. В окне File->Source Control->Advanced->Change Source Control... все было хорошо. Файлы *.vspscc правильно созданы с хорошим контентом. Я удалял привязку и добавлял ее снова и снова, но это не помогло. Все время у меня было это раздражающее сообщение...
И тогда я заметил одно отличие в файлах *.csproj. В моем проблемном проекте не было следующих данных XML:
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
Когда я добавил эти строки, проблема была решена...
Есть ли кто-нибудь, кто может сказать мне, почему эти элементы отсутствуют, и почему они вызывают такую бесконечную проблему с раздражающим сообщением о привязке решения?
Спасибо
1 ответ
Это происходит потому, что файл решения содержит информацию об управлении исходным кодом, а файл.csproj просто реализует то, что ему говорит файл решения.
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
SAK ссылается на "Должен уже знать", поскольку извлекает информацию из файла решения. Файл решения должен содержать что-то похожее на то, что показано ниже
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 4
SccEnterpriseProvider = {3BA58AB2-18FA-4F8D-95D4-32DDF27D184A}
SccTeamFoundationServer = http://TFSSERVER:8080/tfs/DPC
SccLocalPath0 = .
SccProjectUniqueName1 = Project1\\Project1.csproj
SccProjectName1 = Project1
SccLocalPath1 = Project1
SccProjectUniqueName2 = Project2\\Project2.csproj
SccProjectName2 = Project2
SccLocalPath2 = Project2
SccProjectUniqueName3 = Project3\\Project3.csproj
SccProjectName3 = Project3
SccLocalPath3 = Project3
SccProjectUniqueName4 = Project4\\Project4.csproj
SccProjectName4 = Project4
SccLocalPath4 = Project4
EndGlobalSection
Теперь может случиться так, что если человек, впервые проверяющий решение и проекты, не включает файл Solution.vssscc, Visual Studio не может определить элемент управления исходным кодом. если это произойдет, удалите файл vssscc и закройте решение. повторное открытие решения создаст новый файл vssscc, убедитесь, что это проверено обратно в систему контроля версий.
Еще одна вещь, которую нужно проверить при добавлении проекта, убедитесь, что файл решения извлекается, а затем возвращается снова при отправке проекта.
До тех пор, пока файл решения и файл vssscc правильно обрабатываются системой контроля версий, при добавлении нового проекта он должен выбрать параметры управления источником из файла решения и затем применить узлы SCC к новому проекту.