Frage

Wir haben mehrere Projekte, die p4.net , eine verwaltete DLL , was wiederum ist abhängig von p4dn.dll, ein 32-Bit nicht verwalteten DLL. Dies hat Probleme auf x64-Systemen, so dass ich zu jedem Projekt gehen musste, die p4.net verwendet und setzen Sie den Prozessortyp auf x86.

Wenn ich das Problem richtig zu verstehen, ist es, dass, wenn .NET eine exe lädt, ist es für ein Manifest überprüft und, wenn keiner es tut, was für den Prozessortyp am besten ist. Dann, wenn es in den 32-Bit-DLL läuft, es barfs.

kann ich zu jedem Projekt gehen die p4.net verwendet und als 32-Bit markieren. Aber wir haben eine ganze Reihe davon. Außerdem werden die Menschen weiterhin neue zu machen und vergessen 32-Bit zu setzen und dann in der Zukunft werden wir dieses Problem wieder haben, wenn jemand anderes versucht, es auf x64 zu verwenden.

Meine Frage ist: Gibt es eine Möglichkeit, .NET automatisch jede App geladen zu haben, die p4dn.dll als 32-Bit verwendet? Gelingt das nicht, gibt es eine Möglichkeit für die IDE, dies zu erkennen und bauen scheitern?

Oder ist es möglich, eine manifest-Datei zu machen, die ich als nächstes setzen kann oder p4dn.dll p4api, so dass alle Anwendungen, sie wird automatisch laufen in 32-Bit verwenden?

War es hilfreich?

Lösung

Wenn Sie absolut keine andere Wahl haben können Sie CorFlags als Teil eines automatisierten Build-Skript alle .NET-DLLs als x86 markieren - corflags /32bit+ file.dll. Obwohl ich glaube, dass die richtige Ausbildung von Entwicklern angemessenere Lösung ist.

Andere Tipps

CLR überprüft Plattformtyp nur, wenn es eine Baugruppe aus GAC lädt. Ich denke, p4dn.dll wird unter der Anwendung Stammordner enthalten ist, so dass ich glaube, Sie in Ihrer Logik falsch.

Es scheint, dass p4dn.dll kann nicht verwendet werden, wenn es in WoW64 Modus ausgeführt ist und Ihre Anwendung nativ in x64-Modus ausgeführt wird. Ich denke, der beste Weg, um alle Projekt x86 (32) Plattform gezielt zu kompilieren ist. Oder es in die Teile brechen, so p4dn.dll Anrufer würde immer in WoW64 Modus ausgeführt wird.

Außerdem sollten Sie p4net Entwickler wenden volle x64-Plattform-Unterstützung hinzuzufügen.

Ich weiß nicht, von irgendeiner Weise dies automatisch zu tun. Ich würde Ihnen empfehlen Folgendes zu tun:

  • Trainieren Sie Ihre Entwickler,
  • Dieses Thema zu Ihrer internen Wissensbasis und
  • Fügen Sie x64-Plattformen zu Ihrem Testumgebungen

Darüber hinaus könnte man denken, ein VS-Add-in denen das Schreiben für die richtige Zielplattform überprüft. Aber dann könnte es sein, dynamische Erstellung von COM-Komponenten, auch ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top