我試圖創建一個IWindsorContainer
工廠執行與應用程序打包所有的安裝程序(即在bin
文件夾中的所有內容)執行從所有組件安裝在應用程序
它需要的工作:
- 一個Windows客戶端應用程序(可能或可能不會使用ClickOnce安裝)
- Windows服務
- 基於NUnit的集成測試套件(可能有R#運行而發展中國家)
- ASP.NET MVC應用程序
FromAssembly.InThisApplication()
將無法正常工作,因爲這不是「根」組件(有可能甚至不是根assemly)
我的第一個,幼稚的做法是:
return new WindsorContainer()
.Install(
FromAssembly.InDirectory(
new AssemblyFilter(
Path.GetDirectoryName(
Assembly.GetExecutingAssembly()
.Location))));
此工作的罰款1和2,而不是休息。
然後我試着用:
return new WindsorContainer()
.Install(
FromAssembly.InDirectory(
new AssemblyFilter(
Path.GetDirectoryName(
new Uri(
Assembly.GetExecutingAssembly()
.CodeBase)
.LocalPath))));
至少爲ASP.NET工作,但很可能會打破陰影複製。
我是否有更好的替代方案來支持陰影複製場景?
或者我應該忘記整個想法並從入口點程序集運行Install(FromAssembly.InThisApplication())
,確保所有引用都是顯式的?
其他信息:
此代碼是MyCompany.DI
一部分,由包含不同的項目類型......嗯,DI相關的東西,安裝對於那些使用無處不在的東西(GenericFactoryInstaller
,共享庫例子)等
其他安裝程序被包含在根特異性項目或庫(例如,MyCompany.Data
包含NHInstaller
用於查找返回NH配置使用它來創建會話工廠的方法)
換言之,這個「元安裝程序」應該找到當前應用程序中的所有安裝程序並運行它們。我只是想找到一種方法來避免複製&粘貼。
哪裏呢驗證碼現場?爲什麼你堅持在所有這些應用程序之間共享代碼?您很可能不希望在Windows服務和Web應用程序之間使用相同的安裝程序。安裝人員的意圖是特定於應用程序 – 2013-02-26 21:14:48
@KrzysztofKoźmic我希望你能在:-)看到增加的信息。 – 2013-02-27 14:02:30