9 Stimmen

Wie erstellt man eine C#-DLL zur Verwendung in PHP?

Ich verwende eine C#.NET DLL mit ASP.NET 2.0 und es funktioniert jetzt. Ich möchte die gleiche DLL in PHP verwenden.

Ich bin ein Neuling in PHP; würde jemand bitte sagen Sie mir, wie man es in PHP verwenden, oder könnten Sie einige Beispiel teilen?

9voto

foxy Punkte 7539

PHP hat eine integrierte Windows-Erweiterung namens DOTNET die es Ihnen ermöglicht, .NET-Bibliotheken in einer PHP-Anwendung zu verwenden.

Beachten Sie, dass Sie sicherstellen müssen, dass Ihre Baugruppen als COM sichtbar deklariert sind:

[assembly: ComVisible(true)]

Hier sind zwei Beispiele.

<?php
 $stack = new DOTNET("mscorlib", "System.Collections.Stack");
 $stack->Push(".Net");
 $stack->Push("Hello ");
 echo $stack->Pop() . $stack->Pop();
?>

Ein weiteres Beispiel zur Demonstration der Funktionalität der DOTNET-Klasse:

<?php

$full_assembly_string = 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a8425bc35256e463';
$full_class_name = 'System.Windows.Forms.Form';
$form = new DOTNET($full_assembly_string, $full_class_name);

// code to add buttons, menus, text, etc

$form->Show();

$form_event = '';
while($form_event !== 'close') {

  // handle form functions and events

  }
?>

2voto

vaibhav Punkte 21

Wenn Sie die PHP Version 5.4.7 verwenden, sollten Sie com_dotnet.dll bereits haben. wenn Sie sie nicht haben, können Sie sie unter " herunterladen " und fügen Sie es zu Ihrem ext/-Pfad im php-Verzeichnis hinzu.

Bearbeiten Sie die Datei php.ini

extension=php_com_dotnet.dll

1voto

Bitterblue Punkte 10984

Was Sie wirklich brauchen, ist dies:

  • COM-Sichtbarkeit einschalten (ich habe mich vorher geirrt)
  • Signieren Sie Ihre Assembly (geben Sie ihr einen "starken Namen", verwenden Sie "sn.exe", um Public-Private-Keys zu erstellen)
  • Fügen Sie Ihre Baugruppe zum GAC hinzu (verwenden Sie "gacutil.exe")
  • Wenn Sie Ihre Baugruppe ändern, stellen Sie vor dem erneuten Hinzufügen zu GAC sicher, dass Ihre AssemblyVersion (nicht FileVersion) ändert/steigt (man kann auch nach unten gehen)

(Sie finden diese Werkzeuge am ehesten in " C:\Program Dateien (x86) \Microsoft SDKs \Windows\ ...", googeln Sie einfach nach der korrekten Verwendung, das ist ganz einfach)


Das sollte genügen.
In PHP (Beispiel):

<?php
    // use this kind of name, not path to dll or whatever
    // print your assemblly's full name in .NET and use that
    $name = "YourAssembly, Version=1.1.1.1, Culture=neutral, PublicKeyToken=fe6263478ac";
    $obj = new DOTNET($name, "YourNamespace.YourClass");
    echo "success\n";
?>

Oh ja, vaibhav hat Recht mit der "php.ini". Ich brauchte sie nicht zu bearbeiten. Sie hatte die richtigen Werte (Standardwerte vielleicht?).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X