Assemblies are loaded on demand (eg. when the first method to reference it is JIT compiled). So another option is to isolate all code that uses the 3rd party assembly into specific methods, and avoid calling those methods when you know the assembly isn't available. I'm not claiming this is necessarily a great idea , depending on your situation some of the other suggestions (eg. using reflection) might be a better idea. Relying on the lazy-load is a little brittle, you'll will want to disable Inlining of those methods, never call AppDomain.GetAssemblies, and even then I'm not sure the behaviour is guaranteed - might change in future versions of the runtime. But its probably less of a hassle than relying on reflection to bind dynamically to the assembly.
Rick ----- Original Message ----- From: "J. Merrill" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, May 03, 2004 12:40 PM Subject: Re: Stopping .Net Resolving Dependencies > I don't believe there's a way to tell .NET not to resolve particular dependencies. > > One approach: (A) Move all your code that accesses the 3rd-party code into its own assembly (call it the 3pa). (B) Define the interface to that code in another assembly (call it the IA) that's referenced by both your main assembly and the 3pa. (C) If you determine that the 3rd-party code is present, use Reflection to load the 3pa and call a factory-esque method that returns an object that implements the interface defined in the IA and assign it to a variable of the interface type. > > By using the IA, you'll get compile-time checking of the code you write against the interface returned from the 3pa; and you only need to call one method (the one that returns the interface) via Reflection. > > In other environments, you could build two version your DLL-interface assembly and deploy a "stub" version if the 3rd-party DLL isn't there -- but I don't think you can make that work in .NET (particularly if you want to strong-name your assemblies). > > At 04:42 AM 4/30/2004, Steve W wrote > >We have a web application that calls a bunch of VB.NET objects. > > > >We have intgerated with a 3rd party's software which includes one of our > >objects referencing one of their dlls. > > > >When we build our app we get a copy of all required dlls in the bin > >directory of the web app. On a system where the users do not have the 3rd > >party app I would like to be able to remove the 3rd party dll. If I do > >that then I get an error message about it (or a dependency) not being > >accessible. > > > >Is there any way to tell .Net not to resolve dependencies of specific > >components ? > > > >Thanks > > > >Steve > > > J. Merrill / Analytical Software Corp > > =================================== > This list is hosted by DevelopMentor� http://www.develop.com > Some .NET courses you may be interested in: > > NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles > http://www.develop.com/courses/gaspdotnetls > > View archives and manage your subscription(s) at http://discuss.develop.com > =================================== This list is hosted by DevelopMentor� http://www.develop.com Some .NET courses you may be interested in: NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles http://www.develop.com/courses/gaspdotnetls View archives and manage your subscription(s) at http://discuss.develop.com
