web-dev-qa-db-fra.com

Pourquoi le <SccProjectName> manquant dans le fichier de projet provoque "le fichier de projet n'est pas lié au contrôle de code source"

J'ai eu un problème très ennuyeux, j'ai trouvé une solution, mais je voudrais vous demander pourquoi il se comporte comme ça ...

J'utilise Visual Studio 2012 avec TFS 2012. Tout allait bien, mais un jour, j'ai repéré un problème. Lorsque j'ai ajouté un nouveau projet à ma solution, j'ai toujours ce message à chaque fois que je rouvre la solution:

Ce fichier de projet ... n'est pas lié au contrôle de code source, mais la solution contient des informations de liaison de contrôle de code source pour celui-ci. Veux-tu...

Quoi que j'aie fait, j'ai toujours ce message. Dans la fenêtre File-> Source Control-> Advanced-> Change Source Control ... ', tout allait bien. Les fichiers * .vspscc ont été correctement créés avec un bon contenu. J'étais en train de supprimer la liaison et de l'ajouter encore et encore, mais ce n'était pas utile. Tout le temps j'ai eu ce message ennuyeux ...

Et puis j'ai repéré une différence dans les fichiers * .csproj. Mon projet problématique ne contenait pas les données XML suivantes:

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

Quand j'ai ajouté ces lignes, le problème a été résolu ...

Y a-t-il quelqu'un qui peut me dire pourquoi ces éléments manquent et pourquoi ils causent un problème sans fin avec un message ennuyeux sur la liaison de la solution?

Je vous remercie

28
user2323704

Cela se produit car le fichier de solution contient les informations de contrôle de source et le fichier .csproj implémentera simplement ce que le fichier de solution lui indique.

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

Le SAK fait référence à "devrait déjà savoir" car il extrait les informations du fichier de solution. Le fichier de solution doit contenir quelque chose de similaire à ce qui est illustré ci-dessous

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

Maintenant, ce qui peut arriver, c'est que si la première personne qui vérifie la solution et les projets n'inclut pas le fichier Solution.vssscc, Visual Studio ne peut pas déterminer le contrôle de code source. si cela se produit, supprimez le fichier vssscc et fermez la solution. la réouverture de la solution créera un nouveau fichier vssscc, assurez-vous qu'il est vérifié à nouveau dans le contrôle de code source.

Une autre chose à vérifier lors de l'ajout d'un projet, assurez-vous que le fichier de solution est extrait puis réarchivé lorsque vous soumettez le projet.

Tant que le fichier de solution et le fichier vssscc sont correctement gérés par le contrôle de source, lorsque vous ajoutez un nouveau projet, il doit récupérer les paramètres de contrôle de source du fichier de solution, puis appliquer les nœuds SCC à le nouveau projet

42
Just TFS