Zunächst ist System.Windows.Forms
in Unity nicht wirklich Windows-spezifisch. Unity verwendet Mono (Open-Source-Implementierung von Microsoft .NET Framework) im Hintergrund und ist vollständig plattformübergreifend. Der Name der DLL ist System.Windows.Forms
, nur um Mono mit Microsoft .NET Framework-Implementierung kompatibel zu halten.
Hier finden Sie weitere Informationen über Mono's WinForms implementation, wenn Sie interessiert sind.
Protobuf-net verwendet System.Messaging
intern, was bedeutet, dass System.Windows.Forms
ebenfalls enthalten ist. Betrachtet man den Quellcode von Mono's System.Messaging
Implementierung, sehe ich mindestens zwei Referenzen zu System.Windows.Forms
in MessageQueue.resx und Message.resx.
Auch in der Make-Datei von Monos System.Messaging
, können Sie den folgenden Code zu sehen:
ifdef NO_WINFORMS_DEPENDENCY
LIB_MCS_FLAGS += -d:NO_WINFORMS_DEPENDENCY
else
LIB_REFS += System.Windows.Forms
endif
Um es zusammenzufassen, ich glaube nicht, Sie loszuwerden, die Montage bekommen. Ich bin mit Unity nicht wirklich vertraut, aber wenn ich mir die Quellen von sowohl protobuf-net als auch Mono anschaue, müsste man eigene Versionen erstellen oder etwas Magie anwenden, um es loszuwerden.
Edit: Ich frage mich, ob Unity eine Art von Verknüpfung oder Montage Stripping-Mechanismus eingebaut hat? Zum Beispiel kann ich beim Erstellen einer Android-Anwendung einen Linker verwenden, der alle nicht verwendeten Methoden, Klassen und andere Dinge aus den von mir verwendeten Assemblies entfernt. In Ihrem Fall wäre nur die kleine Teilmenge von System.Windows.Forms
Assembly, die protobuf-net verwendet, übrig.
Edit 2:This könnte etwas zu untersuchen sein, obwohl es iOS-spezifisch ist.
vielen dank für ihren kommentar!, Ich werde probobuf-net quellcode überprüfen. – zone1020