web-dev-qa-db-fra.com

Supprimer la connexion TFS de la solution

Comment créer une solution en tant que copie vierge sans mappage vers TFS? Le problème est que ce message indique que j'essaie de l'ouvrir. Je veux l'ouvrir normalement sans connexion TFS. 

enter image description here

52
theChampion

Si vous souhaitez déconnecter définitivement et complètement la solution du contrôle de source, procédez comme suit:

  1. Cliquez sur le bouton 'Non' pour éviter de vous connecter à TFS.
  2. Dans le menu Fichier, accédez aux options de contrôle de source et effacez les liaisons. Vous voudrez spécifiquement Fichier - Contrôle de code source - Avancé - Modifier le contrôle de code source ...
  3. Enregistrez la solution.

La prochaine fois que vous ouvrirez la solution, vous ne serez pas invité à vous connecter à TFS.

33
Richard Banks

Pour supprimer complètement la liaison de contrôle de source TFS, procédez comme suit:

  1. Accédez au dossier de votre solution, recherchez et supprimez tous les fichiers avec les extensions *.vssscc et *.vspscc.
  2. Ouvrez le fichier .sln de votre solution dans le Bloc-notes, puis recherchez et supprimez la section GlobalSection(TeamFoundationVersionControl).

Lien de référence

128
Tabish Usman

Editez le fichier de solution et supprimez la section suivante. Ce ne sera pas pareil mais ce sera pareil.

GlobalSection(TeamFoundationVersionControl) = preSolution
    SccNumberOfProjects = 2
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
    SccTeamFoundationServer = <YourTFSURL>
    SccLocalPath0 = .
    SccProjectUniqueName1 = .
    SccLocalPath1 = .
EndGlobalSection
30
Hamid Shahid

Je n'ai pas assez de réputation pour commenter, mais je voulais juste ajouter que la solution de Tabish fonctionne correctement pour supprimer complètement la solution du contrôle de la source, en particulier lorsque le serveur TFS n'est pas accessible pour une raison ou une autre (par exemple, vous avez téléchargé un fichier. projet que l’auteur n’a pas supprimé de son propre contrôle de source avant le téléchargement).

Toutefois, pour supprimer complètement toutes les traces de contrôle de source du projet et éviter les avertissements mentionnés dans les autres commentaires de cette réponse (par exemple, "Les mappages de la solution n'ont pas été trouvés ..."), vous devez également supprimer le mappage. les lignes suivantes de chaque fichier de projet dans la solution (apparemment, elles figuraient dans le fichier de solution dans les versions précédentes de VS, mais dans VS2017, elles se trouvent dans le fichier de projet de chaque projet de la solution - par exemple [projet] .csproj):

SccProjectName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SccAuxPath = "x"
SccLocalPath = "xxx"
SccProvider = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Merci à la réponse marquée et aux autres commentaires ici pour l'avoir souligné:

Visual Source Safe - Comment supprimer les liaisons de la solution sans ouverture dans Visual Studio

Combiner ceci avec la réponse de Tabish semble être la méthode la plus complète pour supprimer manuellement une solution du contrôle de source.

13
dwillis77
  • Pour supprimer la liaison, vous pouvez utiliser Visual Studio: Menu Fichier/Contrôle de code source/Avancé/Modifier le contrôle de code source.

  • Vous pouvez également le faire vous-même en supprimant tout SCC ... de sln et csproj.

  • Si vous exportez souvent des fichiers source, vous pouvez utiliser ExportSrc . Il comporte de nombreuses options telles que la suppression de la liaison TFS (activée par défaut).

8
meziantou

La plupart des réponses ont fourni une solution, mais je préférerais utiliser une solution fournie par Visual Studio 2017.

Dans la barre de menus de Visual Studio, accédez à Team et sélectionnez Se déconnecter de Team Foundation Server .

1
Abubakar Ahmad

Je viens d'hériter d'une collection de projets TeamFoundation suite à un rachat de fusions et acquisitions et à un transfert de technologie. Il y avait environ 30 solutions et un tas de fichiers * .vssscc et * .vspscc.

Sur la base des commentaires de chacun ci-dessus, j'ai écrit une fonction powershell pour rediriger un dossier racine spécifié, supprimer les fichiers, puis modifier les fichiers de solution pour supprimer la section TeamFoundationVersionControl.

L'utilisation est Remove_TFSfiles "pathname" $booleanflag

Pour voir quels fichiers seraient affectés, utilisez $ false (utilise -whatif)

Remove_TFSfiles "C:\MyDevFolder" $false

Pour supprimer réellement ces fichiers, utilisez $ true

Remove_TFSfiles "C:\MyDevFolder" $true

Voici la fonction

Function Remove_TFSfiles { 
param(
[string]$FolderName = $(throw "-FolderName is required."),
[bool]$RemoveFiles = $(throw "-RemoveFiles (either $true or $false) is required.")
)
$TFSExtensions = '*.vspscc','*.vssscc'                          

if($RemoveFiles) {
    dir -path $FolderName -force -include $TFSExtensions -Recurse | remove-item -Force        
    # Now iterate through any solution files, and whack the TeamFoundationVersionControl section
    Get-ChildItem -Path $FolderName -Filter "*.sln" -Recurse | ForEach-Object {
        $slnFilename = $_.Fullname 
        write-Host -NoNewline "Editing $slnFilename... "
        $File = Get-Content $slnFilename -raw
        $Filestr = [regex]::escape(""+$File+"")
        # The regex escapes must themselves be meta-escaped, therefore "\(" becomes "\\" + "\(" = "\\\(". Did I mention I hate regex?
        $Result = $Filestr -replace "\\tGlobalSection\\\(TeamFoundationVersionControl\\\).*?EndGlobalSection\\r\\n",""
        $result = [regex]::unescape($result)
        sp $slnFilename IsReadOnly $false
        $result | set-content $slnFilename 
        write-Host "Done"
    }
    write-Host -f red "Finished actually removing files and editing *.sln files"
} else {
    dir -path $FolderName -force -include $TFSExtensions -Recurse | remove-item -WhatIf
    write-Host -f green "Finished pretending to remove files"
    # Now iterate through any solution files, and whack the TeamFoundationVersionControl section
    Get-ChildItem -Path $FolderName -Filter "*.sln" -Recurse | ForEach-Object {
        $slnFilename = $_.Fullname 
        write-Host "Not Editing $slnFilename"
    }
}

}

0