[英]iLMerge Enterprise Library 5.0
有沒有人成功完成iLMerged Enterprise Library 5.0? iLMerge成功創建了合並的dll,並且我的mvc應用程序進行了編譯,但是在啟動應用程序時出現以下錯誤:
SecurityTransparent and SecurityCritical attributes cannot
be applied to the assembly scope at the same time.
如果您編寫了要合並的所有程序集,並且知道它們中的任何一個都不對程序集的組織做任何假設,則ILMerge非常有用。 但是在許多情況下(尤其是涉及大量反射或動態語言運行時的情況),ILMerge根本不起作用。 有時,事情以令人驚訝和神秘的方式失敗。
當ILMerge發生故障時,Jeffrey Richter提供了一種更可靠的方法,可以將具有多個DLL依賴項的應用程序部署為單個程序集 。
使用他的方法,每個程序集都可以保留其自己的名稱,強名稱和屬性,從而大大提高了最終應用程序正常運行的機會。
這並非沒有取舍,但即使是ILMerge的作者Mike Barnett在該博客文章的評論中也表示:“作為ILMerge的作者,我認為這太棒了!如果我知道這一點,我永遠也不會寫了ILMerge。”
如果可以使用Richter的方法,則不會絆倒大多數反射或動態陷阱。
實施步驟
AppDomain.CurrentDomain.AssemblyResolve
事件注冊一個ResolveEventHandler
。 您按照以下步驟執行第3部分:
var resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name);
return Assembly.Load(new BinaryReader(resourceStream).ReadBytes(int.MaxValue));
嘗試僅合並屬於應用程序的DLL,而不合並框架的DLL(System.Web.Mvc.dll,System.Web.Routing.dll和System.Web.Abstractions.dll)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.