3

さまざまな方法で組み合わせていくつかの実行可能ファイルを生成するさまざまなプロジェクト (C++ DLL、C++ スタティック ライブラリ、C# アセンブリ、C++ Windows 実行可能ファイル) を含む VS2005 ソリューションがあります。何らかの理由で、ソリューションを開くたびに、VS2005 は編集のためにプロジェクトの 1 つをチェックアウトしようとします。プロジェクトはまったく変更されておらず、チェックアウトされているだけです。チェックアウトする前にプロンプ​​トを表示するように VS2005 を構成すると、ロード中に自動チェックアウトをキャンセルでき、目に見える悪影響はありません。関連する場合とそうでない場合がありますが、チェックアウトし続けるプロジェクトは cppunit バージョン 1.12.0 (静的 lib バージョン) です。どうすればこの迷惑な行動を止めることができますか?

その他の潜在的に関連する (または関連しない) 詳細:

  • ソース管理は Team Foundation Server (Visual SourceSafe ではありません)
  • .suo または .ncb ファイルがチェックインされていない
  • .vcproj および .vspscc ファイルがチェックアウトされています
  • ソリューションを閉じるか、Visual Studio をシャットダウンすると、プロジェクトへの変更を保存するかどうかを尋ねられます。「はい」と答えると、ファイルは変更されません (Kdiff3 はローカル ファイルとサーバー バージョンを比較し、「ファイルはバイナリで等しい」と報告します)。
  • 「変更された」ファイルをチェックインしようとすると、「チェックインする変更はありません。すべての変更は変更されていないファイルまたはロックでした。変更はサーバーによって元に戻されました」という Visual Studio メッセージが表示されます。
4

8 に答える 8

1

CharlesとGraemeが示唆しているように、プロジェクトに直接変更を加えなくても、VisualStudioは常にユーザーオプションファイルなどに変更を加えます。

どの情報が保存されているかはわかりませんが、それが発生することは知っています。一般的な解決策は、*。suoファイルを含めないことです。また、ソースコントロールのbinフォルダーまたはobjフォルダーには何も保存しません。これは、話しているのと同じような効果がある可能性があるためです(ビルドする場合)。(ビルド時にプロジェクトをチェックアウトします。これは実行するためのアクションを実行すると思います)。

全体的にやむを得ない。それがVS2005、2008の仕組みです。

これはあなたの質問に答えますか?

よろしく、フランク

于 2008-09-19T14:13:18.673 に答える
0

この動作の原因として私が遭遇した 2 つの理由があります。

1 つ目は、古いソース管理バインディングです。別のソース管理ツールで管理されていたプロジェクトがある場合、プロジェクト ファイルにバインディングが残っている可能性があります。プロジェクト ファイルを開き、次の設定を次のように変更します。

  • SccProjectName="$/Team/Platform/Projects/MyProject"
  • SccAuxPath="http://teamFoundationServer.example.com:8080"
  • SccLocalPath="."
  • SccProvider="{88888888-4444-4444-4444-BBBBBBBBBBBB}"

これに:

  • SccProjectName="SAK"
  • SccAuxPath="SAK"
  • SccLocalPath="SAK"
  • SccProvider="SAK"

さまざまなプロジェクト タイプがさまざまな方法で定義されます。上記の例は .vcproj からのもので、C# プロジェクトは XML であり、VB は別のもののように見えますが、意味は同じです。4 つの値すべてを定数文字列 "SAK" に設定するだけで、Visual Studio がソース管理を自動的に処理します。詳細については、 Alin Constantin のブログを参照してください。

他の理由の原因はまだわかりませんが、問題を起こしているプロジェクトも CppUnit 1.12.0 です。私は掘り続け、私の発見を投稿します。

ジョン

于 2009-04-30T23:10:56.207 に答える
0

おそらく.suoまたは.ncbファイルをソース管理に入れましたか?

于 2008-09-19T14:06:19.047 に答える
0

cppunit をチェックアウトした後に VS2005 を閉じて、変更が加えられたかどうかを確認しましたか?

Studio を閉じて再度開くまで、プロジェクト ファイルが実際に保存されない Web アプリ ソリューションで、このような問題によく遭遇しました。

于 2008-09-19T14:07:40.387 に答える
0

明確にするために、Visual Studioではなく、Visual SourceSafe2005が問題を引き起こしていることを意味していると思います。(参考までに、Visual SourceSafe は通常 VSS と略されます。)

以前に VSS でこの問題を経験したことがあります。この制限は、Visual SourceSafe にとって本当に根本的なものだと思います。それは、それほど優れた製品ではありません。あなたが影響を与えることができる決定であるなら、私は別のものに移ります。

他のプロジェクトに移行できる場合は、小規模または中規模のプロジェクトに Subversion をお勧めします。これは無料で、Visual SourceSafe が既定で使用する悲観的ロック メカニズムを使用しません。VisualSVN と呼ばれる優れた Visual Studio アドオンがあり、IDE で VSS をそのまま使用できるのと同じ機能 (変更されたファイルの確認など) を利用できます。

ソース管理システムを変更できない場合、Visual SourceSafe には「非排他的チェックアウト」と呼ばれるモード、または Subversion や他のソース管理システムが使用する楽観的ロックを使用するようなモードがあると思います。少なくとも、明らかに変更されていないファイルに対してそのオプションを設定してみて、問題が解決するかどうかを確認してください。

于 2008-09-19T14:08:45.360 に答える
0

ソリューション内のプロジェクトの 1 つに、ワークステーションのソース管理とは異なるパス情報を含むソース管理情報がある場合、これはよく発生します。VS がプロジェクトを開くと、問題のプロジェクトのチェックアウトが自動的に試行され、

これを修正するには、プロジェクトを使用するすべての人にローカル コピーを削除してもらい、「最新バージョンを取得...」してソース管理データベースにあるものを取得するのが最善です。

また、.sln ファイルをチェックし、GlobalScxtion(SourceCodeControl) 領域で各プロジェクトの情報を調べて、相対パスがワークステーションにプロジェクトを保存する方法ではないかどうかを確認することもできます。ただし、このファイルを手動で変更するのではなく、"Get最新バージョン...」は、ソリューションを使用する他の開発者にも問題を引き起こす可能性がはるかに高くなります.

于 2008-09-19T14:09:46.857 に答える
0

cppunit プロジェクトは、プロジェクトが最初に読み込まれたときに 1 つ以上の追加ファイルを自動的に作成し、それらのファイルをプロジェクトに追加している可能性があります。または、ロード時にプロジェクトのプロパティの 1 つが変更またはインクリメントされています。

先に進んでプロジェクトをチェックインすると、次にロードしたときに再びチェックアウトされますか? または、チェックインするとしばらく問題が解決しますか?

于 2008-09-19T14:09:50.163 に答える
0

多くの場合、この種の動作は、VS がソース管理バインディングを更新しようとすることによって引き起こされます。

Graeme は正しいです。VS は、VS を閉じるまでプロジェクト ファイルまたはソリューション ファイルを保存しません。

VS にファイルをチェックアウトさせてから、VS を閉じてから、それらを比較します。

于 2008-09-19T14:11:33.560 に答える