2013-06-25 37 views
2

我有一個主要問題和兩個小問題都是相關的。首先,ngen.exe是否真正編譯爲可以分發的本地exes?對ngen.exe知之甚少。其次,是否真的有一種方法可以將.net編譯爲本機x86代碼,即使它們仍然依賴.net框架。最後,單聲道,你可以編譯爲本地代碼,只需將你的項目從VS中「夾緊」到單聲道?NGEN.EXE(它真的編譯爲本地代碼嗎?)

+0

我可以看到這是標題,答案是「否」。 Ngen必須在用戶的機器上運行,您不能發送.ni.dll文件。而且您仍然需要原始程序集,它們包含抖動所需的元數據。 –

+0

謝謝你,一個誠實的回答。但有沒有辦法編譯爲本地代碼? – user2514562

回答

0

簡答:是的。當你啓動一個沒有NGEN的.NET應用程序時,當你第一次執行一個方法時,它被編譯爲本機代碼。 .NET虛擬機不執行MSIL,它只執行本機代碼。 NGEN所做的就是預先完成所有這些工作。有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx

+1

有很多管理的基礎設施,例如,垃圾收集。這就是你所說的虛擬機。 –

+0

或者你可以看到[Brad Abrams](http://www.businessinsider.com/guy-in-charge-of-microsoft-silverlight-goes-to-google-2010-2010)認爲,http:// stackoverflow.com/questions/1564348/is-the-clr-a-virtual-machine,這就是'CLR和JVM在同一個類中,無論你調用該類軟件的「虛擬機」還是「執行引擎」都取決於你的觀點。「 – Motes

相關問題