We have several projects that use p4.net, a managed DLL, which in turn is dependent on p4dn.dll, a 32-bit unmanaged DLL. This has problems on x64 systems, so I have had to go to each project that uses p4.net and set its processor type to x86.
If I understand the problem right, it's that when .NET loads an exe, it checks for a manifest and if none it does whatever is best for the processor type. Then when it runs into the 32 bit dll, it barfs.
I can go to each project that uses p4.net and mark it as 32-bit. But we have quite a few of these. Also, people are going to continue to make new ones and forget to set 32-bit and then in the future we'll have this problem again when someone else tries to use it on x64.
My question is this: is there a way to have .NET automatically load any app that uses p4dn.dll as 32-bit? Failing that, is there a way for the IDE to detect this and fail to build?
Or is it possible to make a .manifest file that I can put next to p4api or p4dn.dll so that any apps using them will auto run in 32 bit?
If you have absolutely no other choice you can use corflags as part of an automated build script to mark all of the .NET dlls as x86 - corflags /32bit+ file.dll
.
Although I think that proper education of developers is more adequate solution.