2009-05-28 19 views
6

İki farklı asp.net web uygulamasının ikisi de aynı dll'ye gönderme yapıyor. SharedLibrary.dll., kopyalamaksızın farklı web uygulamalarıyla aynı dll'yi paylaşıyor

Bazı web.config ayarlarının, uygulamanın dll dosyalarının iki kopyası olmasını önlemek için uygulamanın yapılandırma dosyalarından birine eklenmesinin bir yolu olup olmadığını bilmek istiyorum. Ben bir web sitesi altında sanal KÖKLER bir DLL paylaşılan geçmişte yapmış

\root 
    \Admin 
      \web.config 
      \Addins 
        \AdminWebAppPage.aspx 
        \bin 
         \AdminWebApp.dll 
         \SharedLibrary.dll <- this is the duplicated dll (I'd like to remove it from here ideally) 
    \Websites 
       \MyWebsite 
         \webroot 
           \web.config 
           \MainWebPage.aspx 
           \bin 
            \MainWebsite.dll 
            \SharedLibrary.dll 

cevap

5

Derlemeyi Global Assembly Cache (GAC)'a kaydederseniz, tüm uygulamalarınız kopyaya sahip olmadan erişebilir. Ancak, bir sürüm ve dağıtım açısından bakıldığında, site başına bir kopyanın tercih edilmesinin tercih edildiğini söyleyebilirim.

Açıklama: Siteler ilişkili değilse, site başına bir kopyalamaya devam etmek tercih edilir. Açıkça, paylaşılan bir kitaplık değiştiğinde, hem ana web sitesi hem de yönetim sitesinin güncelleştirilmiş kopyasını almasını istersiniz. :-)

size daha sonra önceden Vista ancak Win2k üzerinde veya iseniz bir NTFS symbolic link

kullanarak bakmak olabilir Vista makinada iseniz

+1

+1 Dağıtım makinelerinde GAC kullanılması tavsiye edilmez (belirtildiği gibi). Ancak bu problem için en iyi çözümdür. Yalnızca GAC'de hangi meclislerin bulunduğunu ve => dağıtım projelerini kullanmadığınızdan emin olun. – Ropstah

0

şu şekildedir:

Benim [basitleştirilmiş] dizin yapıdır. Yani, bazı DLL'lerin ve bunun altında bir yönetimsel sanal kökü olan bir web sitem vardı. Ana web sitesinin bir çocuk olduğu için, web sitesinin DLL'sini miras alır. Ama emin web siteleri hakkında emin değilim ...

+0

Bu, ana sitenin yönetici sitenin doğrudan bir dizininde bulunmadığı durumlarda çalışır mı? –

+0

Bu son cümleciğin özüdür - emin değilim. Ama belki web.config içine assmeblies ekleyebilirsiniz. GAC aynı zamanda bir seçenek midir? – n8wrl

0

yardımcı olabilecek Dizin içinde DLL bu dilde olmak istediğiniz tüm web uygulamaları arasında okuma hakları var. Application_OnStart olay dinamik bu kodu kullanarak takımını yükleyebilirsiniz yılında

..

Assembly SampleAssembly; 
SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll"); 

Ve ayrıca Assembly_Resolve olayını kullanarak başvuru çözme deneyebilirsiniz.

İlgili konular