6

TFS (2012) サーバーをセットアップしたばかりで、TFS ビルド サーバーを介して完全なコード (VS 2010 の .NET 4.0 で記述) をビルドしようとしています。しかし、私のソリューションには、リンクされたファイルを含む WCF RIA プロジェクトもあります。これは、リンクされたファイルが他の場所でも使用されており、WCF/Silverlight で一般的な .NET バイナリへの参照を追加する可能性がないためです。

私の開発マシンではすべてが問題なくビルドされますが、すべてをチェックインして標準のビルド定義を作成し、そのビルド定義を実行すると、次の問題が発生します。リンクされたファイルにはusings(UsingNamespace など)、私たちによってビルドされ、WCF/Silverlight の前にビルドされる他のプロジェクトがありますが、TFS ビルド サーバーを介してビルド中に次のエラーが表示されます。

型または名前空間 'UsingNamespace' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)'

私が見たこの問題の解決策はありますか?

編集1

Copy to Output Directoryリンクされたファイルのプロパティをに設定しようとしましCopy Alwaysたが、これでも予想と同じエラーが発生します。問題は、リンクされたファイルが使用できる場所に配置されているusingsが、WCF RIA サービスがアクセスできないことです。

編集2

ローカル テスト TFS を試してみたところ、自分のやりたいことを実行でき、そこで、リンクされたファイル ビルドを含むプロジェクトを作成するために必要なソリューションだけでビルド定義を作成しました。これで問題なく動作しました。次に、テスト TFS と同じソリューションを持つ新しいビルド定義を使用して、TFS サーバーで同じことを試しましたが、ここでは機能しませんでした。私が確実に知っている唯一の違いは、テスト用の TFS が TFS 2012 Update 1 であり、運用用の TFS にはまだ Update 1 がないことです。来週取り付けてみます。

編集3

運用 TFS を Update 1 に更新しましたが、リンクされたファイルを使用して Silverlight アプリケーションをビルドするために必要なプロジェクトのみを含む一時的なビルド定義ではまだ機能していません。2 つのワークスペースは両方のサーバーで同じであり、ビルドするプロジェクトも同じです。

4

3 に答える 3

4

使用するビルドのビルド定義でワークスペース情報を指定する必要があります。ワークスペースは、ビルドプロセスがソース管理からビルドサーバーにコピーするものです。ビルドサーバーのワークスペースにすべてがない場合、正しくビルドできません。

[ワークスペース]タブの[ソース管理フォルダー]は、TFSから必要なファイルの場所です。ビルドエージェントフォルダーは、ビルドサーバーの事前定義されたベースロケーションからの相対パスです。通常、$(SourceDir)\ Folderを使用して、ビルドプロセスに必要な「フォルダー」を指定します。

ここに画像の説明を入力してください

于 2013-02-12T19:28:24.510 に答える
2

これは $(Outdir) の問題のように思えます。TFS のビルド定義は、Bin フォルダーを自動的にオーバーライドします。すべてのバイナリは、コンパイル時に bin フォルダーにリダイレクトされます。プロジェクト参照とファイル参照が混在しているように聞こえます。ファイル参照がビルドの失敗の原因である可能性があります。

次のソリューションを同じビルドでコンパイルする場合の例

  • Solution1.sln (TFS ビルド パス)

    • project1.csproj
    • project2.csproj (プロジェクト 1 を参照)
  • Solution2.sln (TFS ビルドの失敗)

    • project3.csproj (プロジェクト 1 のバイナリ出力を参照)

ワークフローをカスタマイズせずにすぐに使用できる TFS からの期待は、この単純なビルドが失敗することです。その理由は、開発ボックスではすべてのプロジェクトが 1 つの宛先に出力を生成するのに対し、tfs ビルドではプロジェクトが $(Outdir) にビルドされるためです。

試してみること

シンプル(私の見解ではベストプラクティス)

  Create 1 solution and use project references instead of file references.

複雑

  Build using MSBuild project files
  Modify your windows workflow to not override the $(Outdir)
  Copy the binaries after a build is complete.

ビルドの自動化に関するベスト プラクティス

  • コマンドラインからビルド
  • cmd から NON vs2010 コマンド ラインをビルドします。
    • C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe ソリューション ファイルへのフルパス.sln

乾杯!

于 2013-02-14T05:47:29.300 に答える
1

どうやら、TFS サーバーで WCF RIA サービス V1.0 SP2 が欠落していたようです。それがインストールされていれば、問題は解決しました。

于 2013-04-12T08:04:05.027 に答える