If you use Assembly.Load, Castle wont be able to resolve it unless you
create a custom AssemblyResolve-eventhandler, like this:

private static Assembly AssemblyResolveEventHandler( object sender,
ResolveEventArgs args )
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
            foreach ( var assembly in assemblies )
            {
                var assemblyName = assembly.GetName();

                if ( assemblyName.Name == args.Name )
                {
                    return assembly;
                }
            }

            // Failed to find the desired assembly
            return null;

        }

And then you need to add this handler like this:

AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveEventHandler;

[email protected] wrote:
>> If you have a project reference, it should work out of the box afaik.
>>     
>
> That was my assumption too.The project UI.Contol wich contains
> the Objectsoure, has a reference to Persistence.Broker and a reference
> to Core.Infrastructure to access the container. Both have the property
> "copy local" enabled. But in Design Time my application is not
> running and VS copies nothing to the temp directory is uses.
> So then i started out to load the assemblies manually, but it all
> doesn't work. As far as i can see, i did all from Assembly.Load to
> Switching the load context...without any success, Castle is not
> able to resolve the correct type.
> Now i tried to remove the "service" tag from the configuration
>
>   <component
>         id="IPersistenceClient_NH"
>       type="Persistence.Broker.NHibernate.PersistenceService,
> Persistence.Broker.NHibernate">
> </component>
>
> and added a reference to Persistence.Broker.NHibernate to the
> UI.Control project.
>
> IPersistenceService pPService = (IPersistenceService)
> CoreApplication.Application.ServiceManager.doResolveByKey
> ("IPersistenceClient_NH");
>
> This leads to the error: ComponentActivator: Could not instantiate
> Persistence.Broker.NHibernate
>
> Volker
>
> On 18 Mai, 09:54, Jimmy Shimizu <[email protected]> wrote:
>   
>> I think you have come across the issue where manually loaded assemblies
>> ( Assembly.Load() ) can't be found automatically when you're trying to
>> access them.
>>
>> Please check this 
>> post:http://blogs.msdn.com/suzcook/archive/2003/05/29/57143.aspx
>>
>> However, you shouldn't need to load your assemblies manually, just make
>> sure your Persistence.Broker.NHibernate-assembly is in your working
>> directory. If you've added it as a reference to your project, make sure
>> you enable "copy local" in the properties for that reference. If you
>> have a project reference, it should work out of the box afaik.
>>
>> VolkerR wrote:
>>     
>>> Hi,
>>> i'm working on a application using Windows Forms. The app builds upon
>>> Castle and NHibernate. Because
>>> i don't want to have any references to NHibernate in the domain model
>>> or the view, i use a separate layer to
>>> access persistent objects. This is done through castle, with the
>>> following sample configuration:
>>> <configuration>
>>>  <components>
>>>    <component
>>>        id="IPersistenceService"
>>>        service="Persistence.Broker.Definition.IPersistenceService,
>>> Persistence.Broker"
>>>        type="Persistence.Broker.NHibernate.PersistenceService,
>>> Persistence.Broker.NHibernate">
>>>    </component>
>>>    <component
>>>        id="IRepository"
>>>        service="Persistence.Broker.Definition.IRepository`1,
>>> Persistence.Broker"
>>>        type="Persistence.Broker.NHibernate.NHibernateRepository`1,
>>> Persistence.Broker.NHibernate"
>>>        lifestyle="transient">
>>>    </component>
>>>  </components>
>>> </configuration>
>>>       
>>> So far so good. Everything works fine while running the application.
>>> The IPersistenceService provides
>>> access to metadata informations about the domain model. This
>>> information is needed for certain
>>> circumstances. One example is data binding. And here we come close to
>>> the problem. For example I want to write an ObjectSource - class,
>>> based on BindingSource. The ObjectSource should provide an
>>> implementation
>>> for the
>>>       
>>> PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[]
>>> listAccessors)
>>>       
>>> method that returns a PropertyDescriptorCollection based on the class,
>>> the ObjectSource is responsible for.
>>> To achieve this, the ObjectSource needs a property that specifies the
>>> IClassDefinition that holds the information about attributes etc. For
>>> this reason i build an UITypeEditor that simply displays a ListBox
>>> where the
>>> developer can select the needed IClassDefinition. The UITypeEditor
>>> needs access to the metadata information at design time and that
>>> means, it needs access to an instance of IPersistenceService. And here
>>> we are...i have to build a WindsorContainer at design time that wires
>>> up the services correctly. But this does not work. I can build the
>>> container and load the configuration XML, but Castle can not resolve
>>> the type for Persistence.Broker.NHibernate.PersistenceService. So my
>>> first thougth was, that the assemblies could not be find. This is
>>> surely true, because the VS FormDesigner stores files in an temp
>>> directory. So I tried to give the assemblies strong names to put them
>>> in the GAC. But the container still complains about not resolving the
>>> type Persistence.Broker.NHibernate.PersistenceService. The next try
>>> was to load the necessary assemblies by myself. There was no failure
>>> loading them at design time, but der Container still was not able to
>>> resolve then correct type. So I ended up, building an application
>>> object just for design time purposes, that uses an own application
>>> domain with the base directory pointing to the assemblies. I created
>>> the Container in the context of the new domain, but it still does not
>>> work.
>>> So now i have no further idea, how to solve this. I have to admit that
>>> i'm not so deep in all the .net internals rigth now, because i just
>>> came over from C++/Delphi. Maybe the solution is really simple, and i
>>> just can not see it :-)
>>> So, if you anyone could give me a hint, maybe just about how Castle
>>> resolves assemblies at all, it would be very grateful.
>>>       
>>> Thanks for reading
>>> Volker
>>>       
> >
>   

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to