1

シナリオは次のとおりです。

SVNに保存されているAC#Windowsアプリケーションプロジェクトは、実行可能ファイルを作成するために使用されます。通常、ビルドサーバーはビルドプロセスを処理し、テストで使用される定期的な間隔でビルドを作成します。この特定の例では、特定のビルドを変更して実行可能ファイルを作成するように求められました。

ビルドサーバーがプロジェクトファイルを変更するかどうかは完全にはわかりませんが、実行可能ファイルのコンパイルに使用したソースコードのタグをSVNに作成することは知っています。そのタグを使用して、開発マシンである2番目のマシンでコードをチェックアウトしました。次に、開発マシンでソースをコンパイルしました。

実行すると、開発マシンでコンパイルされたアプリケーションは、ビルドサーバーでコンパイルされたアプリケーションとまったく同じようには機能しません。たとえば、テストマシンでは、DateTimeParseの実行がアプリケーションによって検出されます。ただし、ビルドマシンの実行可能ファイルは例外をスローしません。開発マシンで実行可能ファイルを実行しても、例外はスローされません。

したがって、要約すると、両方のマシンは理論的には同じソースコードとプロジェクトを使用しています。
開発マシンの実行可能ファイルは、開発マシンでのみ機能します。ビルドマシンの実行可能ファイルは、開発マシンを含むすべてのマシンで機能します。

マシンの地域設定またはタイムゾーンは、コンパイルされた実行可能ファイルに保存されていますか?この動作の原因となる可能性のあるアイデアや、実行可能ファイルをチェックして考えられる違いを見つけて修正する方法はありますか?

残念ながら、テストマシンを使用してデバッガーを接続することはできません。できるだけ早くします。

4

9 に答える 9

4

アプリは実行中のマシンの地域設定を使用しており、それが問題のようです。System.Threading.Thread.CurrentThread.CurrentCulture と System.Threading.Thread.CurrentThread.CurrentUICulture を特定の値に設定することで、スレッドに特定のカルチャを使用するよう強制できます。

于 2008-09-17T19:59:34.717 に答える
2

2 つのマシンに、ビルド プロセスの一部ではない、基になる dll の異なるバージョンがある可能性があります。内部サーバー ファーム全体にサービスを配布するときに、これが発生するのを見てきました。

于 2008-09-17T19:59:29.693 に答える
1

デバッガーを使用して、ビルド マシンでプログラムを実行できますか?

その場合は、問題をデバッグします。推測する必要はありません

開発マシンのデバッガーで例外をキャッチし、ビルド マシンの同じ場所にブレーク ポイントを設定します。両者の違いを見てください。

于 2008-09-17T19:58:39.087 に答える
1

XP のさまざまな「地域と言語のオプション」がこの種の動作を引き起こすのを見てきました。これらは両方のマシンで一致しますか? スタート | 設定 | コントロール パネル | 地域と言語のオプション...

于 2008-09-17T20:01:17.677 に答える
1

いくつか質問があります。両方のマシンの地域設定は同じですか。また、エラー ログはどこにありますか。私は願っています;-)例外が処理され、ディスク、イベントログに書き込まれます..このような問題に役立つものがあります。

解析されている日付はどこから来たのですか? それがあなたのデータベースにある場合、おそらくあなたも悪いデータを持っています。

于 2008-09-17T20:03:19.463 に答える
0

すべてが異なるコンピュータで同じプログラムをビルドする場合、同じソースコードはめったにありません。プログラムは常に異なると想定する必要があり、同じであるとは決して期待しないでください。優れたパッケージマネージャーと定期的またはランダムな更新を備えたLinuxのような環境では、同じソースコードが同じコンピューター上で同じプログラムをビルドすることを期待しないでください。言語が高ければ高いほど、それは悪化します。デバッガー用のプログラムの作成は、リリース用の作成とは大幅に異なります。デバッガーがない場合でも、デバッガーバージョンは、リリースビルドに進むまで見つけられないバグを隠します。デバッガー環境に依存しすぎると、基本的にプログラムを2回デバッグすることになります。

于 2008-09-19T00:49:54.027 に答える
0

ビルド システムはおそらくリリース バージョンを作成しますが、開発用 PC での手動ビルドはデバッグ バージョンを作成します。デバッグ バージョンには、より多くのエラー チェックが含まれています。リリース バージョンを手動でビルドできるかどうかを確認し、まだ違いがあるかどうかを確認してください。

于 2008-09-17T21:22:35.203 に答える
0

私はかつて同様の問題を抱えていました (C++ を除く) コンパイルされた実行可能ファイルのサイズを比較すると、それらはかなり離れていました。残念ながら、何日も検索した結果、私が見つけた最善の解決策は、VS05 をアンインストールして再インストールすることでした。

于 2008-09-17T19:59:40.940 に答える
0

とにかく、C# コードにビルド サーバーを使用している理由を教えてください。

私が使用していたときの C# のビルド時間は、ほとんど目立ちませんでした (<2 秒)。アプリってそんなに大きいの?

于 2008-09-17T20:03:14.270 に答える