2010-04-01 2 views
0

Nous utilisons nettiers comme couche de données, et nous avons récemment commencé à utiliser NServiceBus, mais nous avons atteint un mur.NserviceBus émet une exception lors du référencement d'un assembly Nettiers

Nous avons un service Windows qui héberge NSB et fait référence à notre assemblage Nettiers.

le service lève une exception lorsque la ligne suivante est rencontrée.

var Bus = Configure.With().SpringBuilder() 
      .XmlSerializer() 
      .MsmqTransport() 
       .IsTransactional(false) 
       .PurgeOnStartup(false) 
      .UnicastBus() 
       .ImpersonateSender(false) 
      .CreateBus() 
      .Start(); 

les exceptions qui est Throw:

Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 

le message d'exception du chargeur est:

Could not load file or assembly 'Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.":"Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

stacktrace est:

at System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) 
at System.Reflection.Assembly.GetTypes() 
at NServiceBus.Configure.<>c__DisplayClass1.<With>b__0(Assembly a) in d:\BuildAgent-03\work\672d81652eaca4e1\src\config\NServiceBus.Config\Configure.cs:line 122 
at System.Array.ForEach[T](T[] array, Action`1 action) 
at NServiceBus.Configure.With(Assembly[] assemblies) in d:\BuildAgent-03\work\672d81652eaca4e1\src\config\NServiceBus.Config\Configure.cs:line 122 
at NServiceBus.Configure.With(IEnumerable`1 assemblies) in d:\BuildAgent-03\work\672d81652eaca4e1\src\config\NServiceBus.Config\Configure.cs:line 111 
at NServiceBus.Configure.With(String probeDirectory) in d:\BuildAgent-03\work\672d81652eaca4e1\src\config\NServiceBus.Config\Configure.cs:line 101 
at NServiceBus.Configure.With() in d:\BuildAgent-03\work\672d81652eaca4e1\src\config\NServiceBus.Config\Configure.cs:line 78 
at MessageSender.Program.Main(String[] args) in C:\Development\NSBTest4\MessageSender\Program.cs:line 18 

sans les nettiers ouvrages de référence NSB bien. Une idée de ce qu'est le problème et comment le résoudre?

merci.

Répondre

0

Vous pouvez exclure la dll nettiers de l'analyse à l'aide Avec (AllAssemblies.Except ("nom de dll nettiers")) ...

+0

Merci pour la suggestion, mais malheureusement, cela n'a fait aucune différence. Les assemblages nettiers sont référencés dans DataLayer.dll qui est à son tour référencé par mon projet NSB. donc j'ai ajouté le With (AllAssemblies.Except ("DataLayer.dll")) mais n'avait aucun effet. – IGoor

+0

Pouvez-vous vous assurer que votre datalayer.dll et la dll nettiers sont exclus en utilisant: AllAssemlies.Except ("datalayer.dll") Et ("nettiers.dll")? –

+0

ouais. nous avons essayé cela sans aucune chance. nous allons travailler à la fin en spécifiant quels assemblages à inclure: Avec (typeof (IMessage) .Assembly, typeof (MessageItem.MessageItem) .Assembly, typeof (NServiceBus.Unicast.Transport.CompletionMessage) .Assembly, typeof (MessageReceiver.MessageHandler) .Assembly) – IGoor

0

Microsoft Enterprise Library (référencé par .NetTiers) était notre problème, qui était à son tour référençant une version plus ancienne de Unity. Pour résoudre le problème, nous avons utilisé la redirection de liaison suivante dans la config:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

Alternativement, vous pouvez mettre à jour uniquement la bibliothèque Enterprise à la dernière version.

Questions connexes