2008-09-17 25 views
1

をもたらすここでのシナリオです:SVNに格納二台のマシン上で同じソースコードが異なる実行可能な行動

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

私は、ビルドサーバはプロジェクトファイルを変更する場合、完全にわからないんだけど、私はそれはそれは実行可能ファイルをコンパイルするために使用されるソースコードのSVNでタグを作成します知っています。このタグを使用して、開発マシンである第2のマシンでコードをチェックアウトしました。その後、開発マシンでソースをコンパイルしました。実行すると

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

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

マシンの地域設定またはタイムゾーンは、コンパイルされた実行可能ファイルに保存されていますか?どのような考えがこの動作を引き起こすか、または実行可能ファイルをチェックして可能な違いを見つけて修正する方法

残念ながら、私は試験機を取ると、それにデバッガをアタッチすることはできません。できるだけ早く私はします。

答えて

4

アプリはそれが実行しているマシンの地域設定を使用し、それはあなたの問題であるように見えます。 System.Threading.Thread.CurrentThread.CurrentCultureおよびSystem.Threading.Thread.CurrentThread.CurrentUICultureを特定の値に設定することによって、スレッドに特定のカルチャを使用させることができます。

1

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

もしそうなら、問題をデバッグしてください。を推測する必要はありません。

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

+0

現時点では、どのテストマシンでもデバッガを実行できません。できるだけ早くそうするよ。 –

2

これは、2台のマシンがビルドプロセスの一部ではない根本的なDLLの異なるバージョンを持っている可能性があります。私は内部サーバーファーム全体にサービスを配布するときにこれが起こるのを見ました。

+0

私は両方の外部DLLが同じバイナリであることを確認しました。しかし、提案をありがとう。 –

0

私は同じような問題を一度(C++を除く)コンパイルされた実行可能ファイルのサイズを比較すると、それらは途方に暮れていました。残念ながら、検索の日後、私が見つけた最良のソリューションは、VS05をアンインストールして再インストールすることでした。

1

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

0

なぜ私は聞くかもしれませんが、とにかくC#コードのためにビルドサーバーを使用していますか?

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

+0

テスト用に自動的にリリースされるビルドを作成するにはこの特殊なケースでは、開発マシンの1つで別のビルドを行い、特定の分岐点の変更をテストするように求められました。 –

1

私はいくつかの質問があります - どちらのマシンも同じ地域設定を持ち、エラーログはどこにありますか?私は、あなたが処理され、ディスクに書き込まれる例外を持っていることを願っています、イベントログ..このような問題を助ける何か。

日付はどこから解析されていますか?あなたのデータベースに多分あなたが悪いデータを持っているのであれば。

+0

日付がデータベースから来ていて、例外が処理されているため、警告メッセージが表示されています。私はそれがイベントビューアまたは別のログファイルに何かを書き込むかどうかは完全にはわかりません。私はちょうど1週間前にこのアプリケーションの作業を始めました。 –

0

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

0

すべてのプログラムが同じコンピュータ上に同じプログラムをビルドすることはほとんどありません。あなたはいつもプログラムが異なっていると仮定して、それらが同じであるとは決して考えないでください。良いパッケージマネージャと定期的なアップデートやランダムなアップデートを持つlinuxのような環境では、同じソースコードが同じコンピュータ上で同じプログラムをビルドすることは決してありません。言語が上がるほど悪くなります。デバッガ用のプログラムのビルドは、リリース用のビルドとは大きく異なります。デバッガのバージョンがなくても、リリースビルドに行くまで見つからないバグが隠されます。あなたは基本的に、デバッガ環境にあまりにも頼っている場合は、プログラムを2回デバッグすることになります。

関連する問題