0

次のシナリオで TFS と TFS CI に問題があります (本質的に同じ問題ですが、単純化しました)。

  1. トランクがあります (1 つの VS ソリューションに csprojs のセット)
  2. (トランクから取得した) ブランチがあります。このブランチで、"MyRepository.cs" などの新しいファイルを作成しました。
  3. ブランチをトランクにマージし直しました -- すべて問題ないようです... (保留中の変更では、ファイルは「マージ、ブランチ」としてマークされます)
  4. マージされた保留中の変更をトランクにチェックインします
  5. これにより、TFS でのゲート チェックインが開始されます
  6. これは失敗し、TFS CI から次のメッセージが表示されます。

「CSC: ソース ファイル 'Repositories\MyRepository.cs' が見つかりませんでした」

「TF270015: 'MSBuild.exe' が予期しない終了コードを返しました。予想される '0'; 実際の '1'.」

MyRepository.cs ファイルをチェックインしたとき、MyRepository.cs が含まれているアセンブリの csproj ファイルを明らかにチェックインしました。この csproj には、新しい cs ファイルを含める行があります。

<Compile Include="Repositories\MyRepository.cs" />

したがって、問題は、.csファイルをチェックインしていてcsprojファイルに含まれているにもかかわらず、TFSが.csファイルが存在しないと不平を言っている理由がわからないことです。

ブランチからトランクへのマージを行ったという事実が問題を引き起こしているのではないかと疑っていますが、その理由はわかりません。私はTFS CIに比較的慣れていないので、今どこを見ればよいかを教えていただけると大変助かります。

更新- TFS CI が使用するソース ファイルの作業ディレクトリが MyRepository.cs ファイルをプルしておらず、.csproj ファイルの最新 (チェックイン セット) バージョンをプルしていないことを発見しました (古いトランクのように見えます)。まだバージョン)。エラー メッセージ (上記) は、.csproj を取得しているが、MyRepository.cs ファイルを取得していないことをほのめかしているため、これは非常に奇妙に思えます。

4

2 に答える 2

1

これは、TFS ビルド エージェントが使用したアカウントに、ブランチに対する取得アクセス許可 (またはその他のアクセス許可) がなかったために発生していたことが判明しました。そのため、更新したファイルと、ブランチからトランクにマージされた新しいファイルは、トランク ビルドに表示されませんでした。TFSがこれについて明示的に文句を言わず、代わりに頭を上げて古いトランクファイルを使用したことは少し面倒です(または、文句を言った場合、ログに見つかりませんでした)。

概要: ビルド エージェント アカウントにブランチのアクセス許可を与えることで問題が解決しました。

于 2012-12-03T16:40:07.247 に答える
0

エラーは、コンパイルがファイルを探しているため、csproj ファイルに実際に変更が含まれていることを示しています。ただし、実際のcsファイルがチェックインの一部ではないか、csprojファイルが期待している場所とは異なる場所にチェックインされていることも示しています。もう 1 つの考えられる解決策 (他の 2 つを確認した場合) は、何らかの理由でビルド ワークスペースに Repositories フォルダーを含むマッピングがないことです。

于 2012-11-30T17:18:35.087 に答える