Hallo Leudde,
wir benutzen hier "Microsoft.Practices.Unity" und den Common Service Locator library das funktioniert soweit auch alle wie es sein muss. Nur leider gibt es im zusammenhang mit Access2003 irgendwie Probleme. Da Access das startende Programm ist nimmt sich die ganze Anwendung den Office11 Ordner irgendwie als Startverzeichniss. Da wir die gleichen Probleme auch schon beim "alten" RalfW.Microkernel hatten haben wir beim initialisieren unserer C# Dll's als erstes mal das Environment.CurrentDirectory umgestellt damit immer UNSERER Arbeitspfad genommen wird und ebend NICHT der Office Ordner. Leider interessiert sich Unity irgendwie überhaupt nicht dafür. Die DLL's werden weiterhin im Office Ordner erwartet.
Wir laden die Dll's über eine XML Datei nicht aus dem Code herraus.
Hat irgendwer irgendwie ne Idee??
Howard
als Nachtrag: auch
AppDomain.CurrentDomain.SetData("APPBASE",@"....");
hat nix gebracht
Howard
Mal Application.StartupPath
probiert?
EDIT: Arg, kann man ja gar nicht drauf schreiben...
Was passiert denn, wenn versucht wird, die Assemblies aus dem falschen Verzeichnis zu laden? Gibt es eine FileNotFound-Exception? Dann könnte dir das AppDomain.AssemblyResolve-Ereignis (System) helfen.
Gruß,
dN!3L
Kannst du den probing Pfad auf deinen erweitern?
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
siehe MSDN
loop:
btst #6,$bfe001
bne.s loop
rts
@0815Coder: gute Idee aber das ganze gilt ja nur für Unterverzeichnisse der Aktuellen Ordners...der ja wie bekannt ...Office11 ist...also das geht so leider nich...
Habe allerdings in der Hilfe noch eine weitere Möglichkeit entdeckt, wie man in der Config sagen kann, wo die entsprechende Assembly liegt:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Configuration" culture="neutral" />
<codeBase version="1.2.0.0" href="file://D:\Entwicklung\integration\bin\Microsoft.Practices.Unity.Configuration.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity>
<containers>
<container>
<types>
<type type="RED.C.Information.IInformation, RED.C.Information" mapTo="RED.Information.Information, RED.Information"/>
</types>
</container>
</containers>
</unity>
</configuration>
Nach dem Laden der Config bekomme ich auch Zugriff auf die Section "ms.unity". Allerdings hat diese jetzt nicht den Type "Microsoft.Practices.Unity.Configuration" sondern "System.Configuration.DefaultSection". Somit kann Unity mit der Config nix anfangen. Offensichtlich ist die Struktur der Config-XML so nicht ok.