Hallo,
ich möchte eine Instanz in PHP von einer DLL erstellen, welche in C# geschrieben wurde und mit dem .Net Framework 4.0 kompiliert wurde. PHP findet allerdings die zu ladende dll, welche sich im globalen Assembly Cache (neuerdings unter dem Microsoft.Net Verzeichnis) befindet, nicht:
Ich vermute, dass PHP nur in dem globalen Assembly Cache unter dem "Windows\assembly" Verzeichnis nach der DLL schaut, nicht aber unter dem neuen Verzeichnis. Diese Vermutung hat sich bei mir verstärkt, da das Erstellen einer Instanz funktioniert hatte, sofern die DLL im globalen Assembly Cache unter Windows registriert war. Hat jemand eine Idee ob die DOTNET Klasse von PHP auch bei Assemblies, welche mit .Net Framework 4.0 kompiliert wurden, verwendet werden können? Oder gibt es eine Möglichkeit die .Net 4.0 DLL mittels gacutil 4.0 in den alten globalen assembly cache zu registrieren? Mein Aufruf sieht folgendermaßen aus:
Zur Erinnerung: Der Aufruf funktioniert bei Assemblies, die im alten globalen Assembly Cache installiert sind (windows\assembly). Die Abhängigkeiten der DLL wurden auch alle gefunden (überprüft mit dem Dependency Walker). Außerdem würde das Fehlen einer Abhängigkeit explizit in der Fehlermeldung erscheinen.
Gruß, JeyB
ich möchte eine Instanz in PHP von einer DLL erstellen, welche in C# geschrieben wurde und mit dem .Net Framework 4.0 kompiliert wurde. PHP findet allerdings die zu ladende dll, welche sich im globalen Assembly Cache (neuerdings unter dem Microsoft.Net Verzeichnis) befindet, nicht:
Failed to instantiate .Net object [CreateInstance] [0x80070002] Das System kann die angegebene Datei nicht finden.
Ich vermute, dass PHP nur in dem globalen Assembly Cache unter dem "Windows\assembly" Verzeichnis nach der DLL schaut, nicht aber unter dem neuen Verzeichnis. Diese Vermutung hat sich bei mir verstärkt, da das Erstellen einer Instanz funktioniert hatte, sofern die DLL im globalen Assembly Cache unter Windows registriert war. Hat jemand eine Idee ob die DOTNET Klasse von PHP auch bei Assemblies, welche mit .Net Framework 4.0 kompiliert wurden, verwendet werden können? Oder gibt es eine Möglichkeit die .Net 4.0 DLL mittels gacutil 4.0 in den alten globalen assembly cache zu registrieren? Mein Aufruf sieht folgendermaßen aus:
PHP:
$lFullAssemblyName = "Assembly Name, Version=x.x.x.x, Culture=neutral, ".
"PublicKeyToken=xxxxxxxxxxxxxxxx, processorArchitecture=MSIL";
$lFullClassName = "Namespace.Classname";
try
{
$lDotNet = new DOTNET($lFullAssemblyName, $lFullClassName);
}
catch(Exception $lEx)
{
die("Error occurred:<br>".$lEx->getMessage());
}
Zur Erinnerung: Der Aufruf funktioniert bei Assemblies, die im alten globalen Assembly Cache installiert sind (windows\assembly). Die Abhängigkeiten der DLL wurden auch alle gefunden (überprüft mit dem Dependency Walker). Außerdem würde das Fehlen einer Abhängigkeit explizit in der Fehlermeldung erscheinen.
Gruß, JeyB
Zuletzt bearbeitet: