ソリューションからTFS接続を削除する


82

TFSにマッピングせずにクリーンコピーとしてソリューションを作成するにはどうすればよいですか?問題は、このメッセージを開こうとすると表示されることです。TFS接続なしで通常どおりに開きたい。

ここに画像の説明を入力してください

回答:


50

ソリューションをソース管理から永続的かつ完全に切り離したい場合は、次のことを試してください。

  1. TFSへの接続を回避するには、[いいえ]ボタンをクリックします。
  2. ファイルメニューで、ソース管理オプションに移動し、バインディングをクリアします。特に、ファイル-ソース管理-詳細-ソース管理の変更...が必要になります。
  3. ソリューションを保存します。

次回ソリューションを開いたときに、TFSに接続するように求められることはありません。


1
私の場合、VS2013を使用してTFSとVS2010ソリューションの関連付けを解除する必要がありました。
bvj

このオプションを表示するには、ChromeでJavascriptを再度有効にする(テストのためにオフにする)必要がありました。公平を期すために、MSVCは、TFSログオン画面に警告メッセージをフラッシュすることに言及しました。
アンソニー

これはバインディングファイルを削除しないため正しく機能せず、後でソース管理に再接続するのが困難になります。
ルコス

私の場合、2つのエントリに対して、[切断]ボタンが無効になっています。
B.クレイシャノン

1
VS2017では、これは効果がありません。次にソリューションを開いたときに、次のエラーメッセージに対して[tfsに連絡しない]と[OK]を再度選択する必要があります。
ジェラルド・

192

TFSソース管理バインディングを完全に削除するには、次の2つの手順に従います。

  1. 、ソリューションのフォルダに移動見つけるとしているすべてのファイルを削除*.vsssccし、*.vspscc拡張子が。
  2. ソリューションの.slnファイルをメモ帳で開き、GlobalSection(TeamFoundationVersionControl)セクションを見つけて削除します。

参照リンクの詳細


私も解決しました。VisualStudioだけからTFSを完全に抽出することはできないと思います。
Rudy Scoggins 2017年

3
これは、Team Foundationの出力に「ソリューションのマッピングが見つかりませんでした。ソリューションのマッピングが見つかりませんでした。サーバーが利用できないため、アクティブなソリューションがソース管理から一時的に切断されました。ソース管理への再接続を試み、サーバーが使用可能になったらソリューションを閉じてから再度開きます。このソリューションを別のサーバーに接続する場合は、[ソース管理の変更]ダイアログを使用してください。」
EngineerWithJava54321

2
これは私のために働いた。「参照リンク」の指示に従いました。
Lei Shi

すべての* .vs *ファイルは、ソリューションフォルダープロジェクトフォルダーを意味します。
ourmandave

42

ソリューションファイルを編集し、そこから次のセクションを削除します。同じではありませんが、似ています。

:ソリューションファイルを編集するには、プロジェクトフォルダーに移動し、YouSolutionName.slnメモ帳でファイルを開きます。

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

19

コメントするのに十分な評判がありませんが、Tabishのソリューションが実際に正しく機能して、ソース管理からソリューションを完全に削除することを追加したかっただけです。特に、何らかの理由でTFSサーバーにアクセスできない場合(たとえば、作成者がアップロード前に自分のソース管理から削除しなかったプロジェクト)。

ただし、プロジェクトからソース管理のすべての痕跡を完全に削除し、その回答に対する他のコメントに記載されている警告(「ソリューションのマッピングが見つかりませんでした...」など)を回避するには、ソリューション内のすべてのプロジェクトファイルからの次の行(以前のバージョンのVSではソリューションファイルに含まれていたようですが、VS2017ではソリューション内の各プロジェクトのプロジェクトファイルにあります(例:[project] .csproj))。

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

これを指摘してくれたここにマークされた回答と他のコメントに感謝します:

Visual SourceSafe-VisualStudioで開くことなくソリューションからバインディングを削除する方法

これをTabishの答えと組み合わせることが、ソース管理からソリューションを手動で削除する最も完全な方法のようです。


8
  • バインディングを削除するには、Visual Studioを使用できます:メニューファイル/ソース管理/詳細/ソース管理の変更。

  • slnとcsprojからSCC ...を削除して自分で行うこともできます。

  • ソースファイルを頻繁にエクスポートする場合は、ExportSrcを使用できます。TFSバインディングの削除(デフォルトではオン)など、多くのオプションがあります。


4

ほとんどの回答が解決策を提供しましたが、私はむしろVisual Studio2017が提供する解決策を使用したいと思います。

Visual Studioのメニューバーで、[チーム]に移動し、[ Team FoundationServerから切断]を選択します。それでおしまい。


2
それはあなたの解決策を閉じるだけです..?
jan4co

0

M&Aの買収と技術移転の後、TeamFoundationプロジェクトのコレクションを継承しました。30以上のソリューションがあり、*。vsssccファイルと* .vspsccファイルが大量にありました。

上記の全員の入力に基づいて、指定したルートフォルダーを再帰的に実行し、ファイルを削除してから、ソリューションファイルを編集してTeamFoundationVersionControlセクションを削除するPowerShell関数を作成しました。

使用法は Remove_TFSfiles "pathname" $booleanflagです。

影響を受けるファイルを確認するには、$false(-whatifを使用)を使用します。

Remove_TFSfiles "C:\MyDevFolder" $false

これらのファイルを実際に削除するには、次を使用します$true

Remove_TFSfiles "C:\MyDevFolder" $true

関数は次のとおりです。

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) {
        Get-ChildItem -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)
            Set-ItemProperty $slnFilename IsReadOnly $false
            $result | Set-Content $slnFilename 
            Write-Host "Done"
        }
        Write-Host -f red "Finished actually removing files and editing *.sln files"
    }
    else {
        Get-ChildItem -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"
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.