假設我需要部署一個程序集(Requirement)。我將使用ILMerge合併所有程序集。但是我的很多程序集都有PreApplicationStartMethodAttribute(我沒有對所有這些程序集進行任何控制)。 ILMerge將創建一個程序集,並且PreApplicationStartMethodAttribute只能在程序集中使用一次。我該怎麼辦?System.Web.PreApplicationStartMethodAttribute和ILMerge
回答
(從評論)
在.NET 4.0,PreApplicationStartMethod
只能使用一次每組件指定:
PreApplicationStartMethodAttribute Class
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false)] public sealed class PreApplicationStartMethodAttribute : Attribute
但在.NET 4.5,多發性單個組件中的屬性都可以:
PreApplicationStartMethodAttribute Class
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true)] public sealed class PreApplicationStartMethodAttribute : Attribute
,因此您可以通過升級到.NET 4.5避免此問題。
我想知道是什麼讓CLR團隊在定義了多個這樣的屬性的情況下使用此限制來實現它:'不能保證程序集定義的應用程序啓動方法被調用的順序。因此,每個已註冊的開始方法應該編碼爲獨立運行,並且不應該依賴於其他已註冊開始方法的副作用。爲什麼他們不能保證執行的順序是在assemblyinfo.cs文件中定義的? – RBT
@RasikBihariTiwari假設當檢索屬性時,即使它們是在同一個源文件中定義的,也可以用源代碼順序檢索它們。 [沒有要求。](http://stackoverflow.com/a/480079)你也假設他們都在AssemblyInfo.cs文件中定義。沒有要求:他們可以在單獨的文件中定義,其中沒有訂單比其他任何訂單更明智。 – hvd
我完全錯過了這種情況,可以在應用程序域中加載的各種程序集中的多個AssemblyInfo.cs文件中提及此屬性。我一直在想,我通常只在我的啓動項目中使用這個屬性來初始化DI容器中的服務註冊等。同意你的意見。感謝您的快速響應! – RBT
- 1. ILMerge和NHibernate?
- 2. ILMerge和Web Resources
- 3. ILmerge和程序集參考
- 4. ILMerge和項目參考
- 5. 使用ILMerge合併dll使用ILMerge
- 6. iLMerge Enterprise Library 5.0
- 7. ILMerge for Silverlight 4
- 8. ilmerge System.Web.Mvc問題
- 9. ILMerge問題
- 10. 使用ILMerge
- 11. MSCRM DLL ILMerge
- 12. Dotfuscator和ILMerge可以一起使用嗎?
- 13. ILMerge和本地化的資源集合
- 14. ILMerge和類上的自定義屬性
- 15. ILMerge和許多DLL的性能
- 16. ILMerge代碼爲-1073741701
- 17. ILMerge有點失落
- 18. 需要ILMerge提示
- 19. ILMerge命令錯誤
- 20. ILMerge掛在合併
- 21. 構建ILMerge錯誤
- 22. Nant Task For IlMerge 2.9.210.0
- 23. 在NuGet中使用ILMerge
- 24. Ilmerge導致dll的打開
- 25. ILMerge與NHIbernate的困境
- 26. ILMerge - 忽略依賴關係
- 27. 在IronPython中使用ILMerge
- 28. 申請停止使用ILMerge
- 29. 不能讓ilmerge工作
- 30. ILMerge VS2013發佈活動
你可以像所有的程序集一樣做ZIP嗎?然後創建一個包含ZIP文件作爲資源的包裝程序集,以及從ZIP文件中提取其他程序集的代碼? –
@JohnSaunders,我不明白? – user960567
@ user960567實際上,John Saunders所說的是「不要創建單個程序集,保留多個程序集,但將它們隱藏在一個文件中」。這可能會或可能不會滿足您的要求。 – hvd