Почему отсутствует <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 к новому проекту.

Другие вопросы по тегам