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.
Si vous souhaitez déconnecter définitivement et complètement la solution du contrôle de source, procédez comme suit:
La prochaine fois que vous ouvrirez la solution, vous ne serez pas invité à vous connecter à TFS.
Pour supprimer complètement la liaison de contrôle de source TFS, procédez comme suit:
*.vssscc
et *.vspscc
..sln
de votre solution dans le Bloc-notes, puis recherchez et supprimez la section GlobalSection(TeamFoundationVersionControl)
.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
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.
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).
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 .
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"
}
}
}