Wir haben mehrere Projekte, bei denen p4.net , eine verwaltete DLL, die wiederum von p4dn.dll, einer nicht verwalteten 32-Bit-DLL, abhängig ist. Dies führt zu Problemen auf x64-Systemen, so dass ich in jedem Projekt, das p4.net verwendet, den Prozessortyp auf x86 einstellen musste.
Wenn ich das Problem richtig verstanden habe, ist es so, dass .NET beim Laden einer Exe auf ein Manifest prüft, und wenn es keines gibt, tut es das, was für den Prozessortyp am besten ist. Dann, wenn es in die 32-Bit-dll läuft, es kotzt.
Ich kann jedes Projekt, das p4.net verwendet, als 32-Bit-Projekt markieren. Aber wir haben eine ganze Menge davon. Außerdem werden die Leute weiterhin neue Projekte erstellen und vergessen, 32-Bit einzustellen, und dann werden wir in Zukunft wieder dieses Problem haben, wenn jemand anderes versucht, es auf x64 zu verwenden.
Meine Frage ist folgende: Gibt es eine Möglichkeit, dass .NET automatisch jede Anwendung lädt, die p4dn.dll als 32-Bit verwendet? Wenn das nicht der Fall ist, gibt es eine Möglichkeit für die IDE, dies zu erkennen und nicht zu bauen?
Oder ist es möglich, eine .manifest-Datei zu erstellen, die ich neben p4api oder p4dn.dll einfügen kann, so dass alle Anwendungen, die sie verwenden, automatisch in 32 Bit ausgeführt werden?