开发者

Using different versions of the same assembly

开发者 https://www.devze.com 2022-12-30 21:23 出处:网络
I have a projec开发者_开发知识库t where I simultaneously must use reports built in ActiveReports 2 and ActiveReports 6.Overall, it works ok, but some of the helper assemblies use the same name.For ins

I have a projec开发者_开发知识库t where I simultaneously must use reports built in ActiveReports 2 and ActiveReports 6. Overall, it works ok, but some of the helper assemblies use the same name. For instance, to be able to export to PDF, both versions use an assembly called ActiveReports.PdfExport.dll. The corresponding assemblies are different, of course.

Note that I don't access the ActiveReports.PdfExport.dll directly - this is handled by the ActiveReports runtime.

I can't find a way to include both of them into the project. Is there a way? Is GAC the answer?


Creating separate external aliases for each assembly will help if you have type name collisions. For assembly name collisions, take a look at ILMerge; you can combine all related assemblies together. You'd create an assembly for ActiveReports 2 that combines all its required assemblies and another for ActiveReports 6.


GAC is one way, but Fusion resolution has a lot of flexibility in it that might suffice. Fusion will probe in the BaseDirectory for the assembly name .[DLL|EXE]. If not found it will probe BaseDirectory\Name.[DLL|EXE]\Name.[DLL|EXE]. So you might be able to get away with creating a folder named ActiveReports.PdfExport.DLL in your Bin folder and dumping the older version of the file in there.


Yes, you have to put both into GAC (this is what it's made for, in case of client assemblies).

My idea: create two libraries-helpers, reference each to appropriate assembly, register them into some kind of factory or manager and call specific one when you need.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号