到目前为止,我从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
答案 0 :(得分:0)
我猜你通过“二进制兼容”意味着你的文件不完全相同,而不是它们不会以相同的方式执行,这取决于你如何调用编译器。
编译器(Csc.exe)在每个编译文件中添加时间戳和其他一些内容,因此即使源未更改,从两个不同编译生成的文件也不会完全匹配。在这里有一个关于它的帖子,它解释了一下,Why does C# generate different EXEs for the same source-code?,但我也在MSDN上阅读了一篇很好的博客文章,谈到了这个,但我现在似乎无法找到它。 / p>