16

私は、さまざまなソース管理プロバイダーを使用するさまざまなプロジェクトに取り組んでいます。Subversion、Git、TFS など...

Subversion で作業するために、AnkhSVN をインストールしました。Git で作業するために、Git Source Control Provider をインストールしました。TFS で作業するために、...そうですね。

ソース管理情報は、ソリューション ファイルの一部として保存されます。

それでも、常に、新しいプロジェクトを開くと、Visual Studio は最後に選択したソース管理プロバイダーが何であれ、それを使用し続けます。ソリューション ファイルから取得していないようです。プロバイダーを切り替えるには、常に [ツール] > [オプション] ダイアログを開く必要があります (これには永遠に時間がかかります!)

これは私が間違っていることですか?Visual Studio は、公開されているソリューションに基づいてプロバイダーを変更することを期待しています。

これが Visual Studio では単純にできないことである場合、これを自動的に把握するマクロまたは拡張機能はありますか?

この質問が以前に聞かれたことがないとは信じられませんが、StackOverflow の「既に回答がある可能性のある質問」のリストに明らかな重複はありませんでした。悲しいことに、それは「それは私だけです」という答えを指しているようです.

4

3 に答える 3

2

実際には答えではありませんが、これは大きすぎてコメントできませんでした。

私は「私のために働く」と言うのは嫌いですが、それは実際には私のために働きます。私はAnkhSVNとTFSクライアントのみを使用していますが、Visual Studioは、開いているソリューションに応じて2つを切り替えます。ですから、あなたが間違いなく求めているのは、機能するための「サポート」です。おそらく、他のプラグインプロバイダーの1つに問題がありますか?

ソリューションファイルを開いて、ソース管理情報がそこにあることを確認しましたか?次のようになります。

GlobalSection(SubversionScc) = preSolution
    Svn-Managed = True
    Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection

GlobalSection(TeamFoundationVersionControl) = preSolution
    SccNumberOfProjects = 5
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
    SccTeamFoundationServer = http://XXXXX:8080/tfs/XXXXX
    SccProjectUniqueName0 = ...
    SccProjectName0 = ...
    SccLocalPath0 = ...
    <etc>
EndGlobalSection

また、適切なソリューションを開くと、プロバイダーを切り替えていないことをどのように示していますか?エラーメッセージが表示されますか、それともプロジェクトがソース管理にバインドされていないように見えますか?特に、SVNソリューションを開くと、TFSウィンドウが開いたままになり、奇妙なエラーが表示されますが、ソリューションエクスプローラーのコンテキストメニューが正しいプロバイダーに切り替わります。

于 2012-05-30T19:22:19.490 に答える
1

Visual Studio は間違いなくこれをサポートしています。ソース コード管理プロバイダーは、それがどのプロバイダーであり、どのバインディングを使用しているかについて、何らかの情報をソリューション ファイルに永続化することが期待されます (必要に応じて、VSS と TFS はこれを使用すると思います)。

VS がソリューションをロードするとき、正しいプロバイダーを選択するはずです。

あなたの質問から、そしてこの質問から、何らかの形で壊れているようです。

これを行うには、マクロを作成する必要がある場合があります。特に難しいことではありません。SolutionEventsインターフェイスをフックする必要があります。構成されたソース管理プロバイダーにアクセスする方法がわかりません。ここから始めてください。

とはいえ、それ機能するはずです。2 つを除くすべてのプラグインを無効にして、機能するかどうかを確認します。私が得ているのは、プロバイダーの 1 つがソリューションの読み込み中に例外をスローし、VS が他のプロバイダーをあきらめている可能性があるということです。

于 2012-05-30T19:13:44.607 に答える