У нас есть несколько проектов, в которых используется p4.net , управляемая DLL, которая, в свою очередь, зависит от p4dn.dll, 32-разрядной неуправляемой DLL. Это имеет проблемы в системах x64, поэтому мне пришлось обратиться к каждому проекту, использующему p4.net, и установить его тип процессора x86.
Если я правильно понимаю проблему, это то, что когда .NET загружает исполняемый файл, он проверяет манифест и, если нет, делает то, что лучше для процессора. Затем, когда он сталкивается с 32-битной DLL, он barfs.
Я могу перейти к каждому проекту, использующему p4.net, и отметить его как 32-битный. Но у нас их немало. Кроме того, люди продолжат создавать новые и забудут установить 32-битные, и в будущем у нас снова возникнет эта проблема, когда кто-то еще попытается использовать ее на x64.
Мой вопрос таков: есть ли способ .NET автоматически загружать любое приложение, которое использует p4dn.dll как 32-битный? Если это не так, есть ли в IDE способ обнаружить это и не построить?
Или можно создать файл .manifest, который я могу поместить рядом с p4api или p4dn.dll, чтобы любые приложения, использующие их, автоматически запускались в 32-разрядной версии?