4 Stimmen

Wie man ein Bibliotheksprojekt erstellt

Ich kann Konsolenanwendung, WPF, WinForm, etwas anderes sehen

Aber es gibt keine Bibliothek, ich brauche nur eine Bibliothek.

Wie kann ich es überlisten? Oder gibt es keine Möglichkeit, eine Bibliothek mit Iron Python zu erstellen?

5voto

Cameron Punkte 91138

Ich weiß nicht von jeder Out-of-the-Box-Lösung, aber Sie können auf jeden Fall Ihre Python-Bibliothek schreiben (mit, sagen wir, Dateien mit einer Build-Aktion von "None", die zu einem C#/VB.NET-Klassenbibliothek-Projekt hinzugefügt wurden), dann manuell kompilieren sie in eine DLL mit dem folgenden IronPython Snippet:

import clr
files = [ 'file1.py', 'file2.py' ]    # Look into os.walk() if you have more than a few files
clr.CompileModules('Foo.dll', *files)

Wenn sich der Code oft genug ändert, können Sie dieses Skript als Teil des Erstellungsprozesses ausführen (und wenn es zu lange dauert, können Sie etwas Code hinzufügen, um das Datum der letzten Änderung aller Dateien zu speichern und vor der Erstellung zu vergleichen).

Denken Sie daran, dass Sie Folgendes schreiben müssen einige Codes um von Ihren .NET-Projekten aus auf Ihre Bibliothek zuzugreifen (es ist leider nicht so einfach, einen Verweis hinzuzufügen).

2voto

Lukas Cenovsky Punkte 5330

Siehe IronPython-2.7\Tools\Scripts\pyc.py - es kann sowohl .exe als auch .dll aus Python-Quellen erstellen.

ipy.exe pyc.py /out:my_dll /target:dll my_dll.py

1voto

Brian Lyttle Punkte 14413

Meines Erachtens gibt es kein Bibliotheksprojekt, da die DLLs vollständig überprüfbar sind, aber da könnte ich mich irren. Es gibt einige zusätzliche Informationen auf dieser Blogbeitrag die den Code, den @Cameron gepostet hat, etwas ausführlicher behandelt.

1voto

Carlos Quintanilla Punkte 12057

SharpDevelop hat eine IronPython - "Class Library" Vorlage für die Erstellung von IronPython dlls.

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