web-dev-qa-db-ja.com

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

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

enter image description here

61
theChampion

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

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

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

38
Richard Banks

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

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

参照リンク

153
Tabish Usman

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

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

コメントするほどの評判はありませんが、Tabishのソリューションが実際に正しく機能し、特にTFSサーバーに何らかの理由で到達できない場合(たとえば、アップロード前に作成者が独自のソース管理から削除しなかったプロジェクト)。

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

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

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

ビジュアルソースセーフ-Visual Studioで開くことなくソリューションからバインディングを削除する方法

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

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

  • SlnおよびcsprojからSCC ...を削除して、自分で行うこともできます。

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

8
meziantou

ほとんどの答えは解決策を提供しましたが、私はむしろVisual Studio 2017が提供する解決策を使用します。

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

4
Abubakar Ahmad

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) {
    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"
    }
}

}