2011-01-10 20 views
1

我在c#中有一個簡單的應用程序。我想DLL是「內部」的exe文件。我該怎麼做呢?我如何強制使用exe構建DLL,因此只有一個文件?

+0

你是否也構建了dll或者它是否依賴於其他來源? – Tim 2011-01-10 22:01:28

+0

@tim它來自anotehr源 – 2011-01-10 22:04:48

+0

爲什麼你需要這樣做? – 2011-01-10 22:24:28

回答

5

ILMerge做你正在尋找什麼


的頁面是一個有點誤導,ILMerge適用於按照其actual webpage

ILMerge V3和V4組件應該只是罰款與 新.NET的版本。只需使用 選項:/ targetplatform:v4 ,.對於版本3.5的 ,您可能不需要 來設置目標平臺,但是您的 可能需要將v3.5框架 目錄添加爲/ lib選項,以便可以從中找到 程序集。 (除非它們在GAC中,其中 無論如何都會被發現)。要在v4.0運行時運行 ILMerge,請使用此 配置文件。


要回答你如何在對方的回答用它從你的問題

用法:ilmerge [/ lib目錄下:目錄] * [/日誌[:文件名] [/關鍵文件:文件名 [/延遲]] [/內部化[:文件名]] [/ t [arget] :(library | exe | winexe)] [/關閉] [/ ndebug] [/ ver:version] [/copyattrs [/ allowMultiple]] [/ xmldocs] [/ attr:filename] [/ ta rgetplatform:[,] |/v1 | /v1.1 |/v2 |/V4] [/ useFullPublicKeyForReferences] [/通配符] [/ zeroPe種類] [/ allowDup:類型] * [/聯合] [/對齊:N] /出:文件名 [...]

所以ilmerge /out:Combined.exe mainFile.exe otherDll.dll您的情況下,大部分的默認值應該是罰款

2

ILMerge可以爲.NET程序集做到這一點 - 雖然它與某些類型的組件(如WPF組件)一定的侷限性。

或者,您可以使用use the assembly as a resource and load it on demand或使用支持程序集合並的許多商業混淆器之一。許多第三方選項支持更精細的依賴合併和/或依賴嵌入。一個很好的例子是SmartAssembly,它支持這兩個選項。

相關問題