TFS - 実験的開発のための分岐:ソリューションの読み込みに失敗する
-
09-06-2019 - |
質問
免責事項:私は TFS に行き詰まっていて、それが嫌いです。
私のソース管理構造は次のようになります。
- /dev
- /リリース
- /ブランチ
- /実験的アップグレード
私は開発から実験的アップグレードに分岐しましたが、それには触れませんでした。その後、dev でさらに作業を行い、experimental-upgrade にマージしました。どういうわけか、TFS はソースとターゲットの両方に変更があり、それらを解決する必要があると苦情を言いました。5 つの項目すべてに対して「ソース ブランチから項目をコピー」を選択しました。
実験的アップグレードをローカル フォルダーにチェックアウトし、そこにあるメイン ソリューション ファイルを開こうとします。TFS から次のプロンプトが表示されます。
「最近このソリューションにプロジェクトが追加されました。ソース管理からそれらを取得しますか?
「はい」と答えると、いくつかのことは実行されますが、最終的にはいくつかのプロジェクトをロードできずに戻ってきます。「ノー」と言ったとしても同じ結果が得られます。
両方のブランチの sln を比較すると、それらが等しいことがわかります。
誰かが私が間違っていることを教えてもらえますか?これは簡単な分岐/マージ操作であるはずです...
ティア。
アップデート:
上のダイアログで「はい」をクリックすると、プロジェクトがソース管理の $/ ルートにダウンロードされることに気付きました。(すなわち、dev および Branch フォルダから)
ブランチでソリューションを開いて死んだプロジェクトを削除し、それらを再度追加しようとすると (sln を右クリックし、既存のプロジェクトを追加し、ブランチ フォルダーにあるプロジェクトを選択して)、エラーが発生します...
プロジェクト c:\sandbox\my_solution\proj1\proj1.csproj を読み込めません。ファイルは削除または削除されました。追加しようとしていたプロジェクトのパスは次のとおりです。c:\sandbox\my_solution\branches\experimental-upgrade\proj1\proj1.csproj
いったい何がこれらのプロジェクトを指しているのか 外 彼らの地元のルーツですか?ソリューション ファイルは dev ブランチ内のファイルと同一であり、これらのプロジェクトは問題なく読み込まれます。vspscc ファイルと vssscc ファイルも調べましたが、何も見つかりませんでした。
アイデアは?
解決
@ベン
実際には TFS で完全な削除を実行できますが、何をしているのかを理解していない限り、これはあまりお勧めできません。コマンド tf destroy を使用してコマンドラインから実行する必要があります
tf destroy [/keephistory] itemspec1 [;versionspec]
[itemspec2...itemspecN] [/stopat:versionspec] [/preview]
[/startcleanup] [/noprompt]
Versionspec:
Date/Time Dmm/dd/yyyy
or any .Net Framework-supported format
or any of the date formats of the local machine
Changeset number Cnnnnnn
Label Llabelname
Latest version T
Workspace Wworkspacename;workspaceowner
これを実行する直前に、/preview を使用して必ず試してください。また、誰もが独自の分岐方法を持っています。私の場合はリリースをブランチし、すべての開発を開発フォルダーまたはルートフォルダーで行います。また、分岐は問題なく機能しているように見えましたが、バインディングの問題と vssss ファイルが原因である可能性があるソリューション ファイルが台無しになっているだけです。
他のヒント
@ニック:これにはまだ変更は加えられていません。削除して再分岐する必要があるかもしれません (ただし、TFS では完全に削除することはできません)
そして、私は同意しなければなりません...実験的な変更を行う場合、分岐は絶対に良い方法です。棚は、まだチェックインしたくない場合にバックアップされる一時的な保管場所です。ただし、これは実際の機能を開発しながら開発する必要があります。
ソリューションの設定について詳しく知らないと、確信が持てません。ただし、それを説明できるプロジェクトのリファレンスがあれば教えてください。「branch」の下に「experimental-upgrade」サブフォルダーがあるため、相対パスが変更されています。
これは、VS が参照プロジェクトを ..\..\project\whatever で検索していましたが、現在は ..\..\..\project\whatever で検索する必要があることを意味します。余分な ..\ に注意してください。
これを修正するには、プロジェクト参照を再度追加する必要があります。もっと良い方法が見つかりませんでした。それらを削除して再度追加するか、プロパティ ウィンドウに移動してそれらへのパスを変更してから再ロードすることができます。いずれにせよ、プロジェクトからそれらへの参照をやり直す必要があります。
また、作業フォルダーをチェックして、間違ったフォルダーにプロジェクトがダウンロードされていないことを確認してください。こういうことは時々起こるかもしれません...
いくつかのこと。フォルダ構造は同じですか?プロジェクト参照を正常に削除して再追加できますか?
ソリューションを作成してからすべてのプロジェクトを手動で追加すると、機能しますか。(それは実現不可能かもしれません。私たちは 100 を超えるプロジェクトに関するソリューションを持っています)。
もう 1 つ (愚かなことかもしれませんが) - ブランチを作成した後、それをコミットしましたか?分岐してチェックインせずにマージし、その後チェックインしようとしたときに TFS が非常に混乱したのではないかと思います。
@ケビン:
これは、VS が参照プロジェクトを ....\project\whatever で検索していたが、現在は ....\project\whatever で検索する必要があることを意味します。余分な ..\ に注意してください。
ここで何かを理解しているかもしれませんが、一部のプロジェクトが読み込まれ、他のプロジェクトが読み込まれない理由は説明されていません。それらの間に相関関係はまだ見つかりません。
プロジェクトを再度追加して、それが機能するかどうかを確認してみようと思います。
@コリー:
それを試してみようと思うのですが...約 20 個のプロジェクトがありますが、8 個ほどが読み込まれていません。フォルダー構造はルートから同一です...つまり:DEV 以外の参照はありません。