1

これまでは VS からプロジェクトをコンパイルしていましたが、コンパイル プロセスをスクリプトに移行しました。vcbuild.exeこの目的のために、コマンド ライン パラメータを使用します。私が見ているのは、出力ファイルがバイトごとにまったく似ていないことです。 VS のコマンド ラインとスクリプトのコマンド ラインを比較したところ、最後のコンマまで同じなので、なぜそんなに違うのかわかりません。

VS コンパイルとログのコマンド ラインは同じですvcbuild(わかりやすくするために改行を追加しています)。

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe
    /noconfig
    /unsafe-
    /nowarn:1701,1702
    /platform:x86
    /errorreport:prompt
    /define:TRACE
    /reference:C:\blahblah.dll
    /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll
    /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll
    /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll
    /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
    /debug:pdbonly
    /optimize+
    /out:obj\x86\Release\blah.exe
    /target:winexe
    /win32icon:blah.ico
    ..\..\blah\version.cs
    Program.cs
    Properties\AssemblyInfo.cs
4

1 に答える 1

0

「バイナリ互換」とは、コンパイラの呼び出し方法によってはファイルが同じように実行されないということではなく、ファイルがまったく同じではないことを意味していると思います。

コンパイラ (Csc.exe) は、コンパイルされた各ファイルにタイムスタンプとその他のものを追加するため、ソースが変更されていなくても、2 つの異なるコンパイルから生成されたファイルは完全には一致しません。それについてのスレッドが SO にあり、少し説明しています。C# は同じソースコードに対して異なる EXE を生成するのはなぜですか? 、しかし、これについて話しているMSDNの良いブログ投稿も読みましたが、今は見つけられないようです.

于 2012-10-22T19:14:13.490 に答える