У меня есть существующее приложение С#, написанное для .NET 2.0, и таргетинг на AnyCPU на данный момент. В настоящее время он ссылается на некоторые сторонние .NET-библиотеки DLL, для которых у меня нет источника (и я не уверен, были ли они созданы для x86, x64 или AnyCPU).
Если я хочу запустить свое приложение специально на 64-битной ОС Windows, какой платформе я должен настроить таргетинг, чтобы мое приложение запускалось без ошибок? Мое понимание на данный момент нацелено:
- x86. Если по крайней мере одна сторонняя .NET-библиотека DLL построена для x86 или использует p/Invoke для взаимодействия с DLL файлами Win32. Приложение будет работать в 32-битном режиме на 32-битных и 64-битных операционных системах.
- x64. Если все сторонние DLL файлы сторонних разработчиков уже созданы для x64 или AnyCPU. Приложение будет работать только в 64-битных операционных системах.
- AnyCPU: если все сторонние .NET-библиотеки DLL уже созданы для AnyCPU. Приложение будет работать в 32-битном режиме на 32-битных операционных системах и 64-битных в 64-битных операционных системах.
Кроме того, могу ли я поверить в то, что в то время как таргетинг AnyCPU не будет генерировать ошибок при создании приложения, ссылающегося на сторонние x86.NET DLL, приложение будет бросать исключение во время выполнения, когда пытается загрузить эти DLL, когда оно работает на 64 разрядной ОС.
Следовательно, если одна из моих сторонних DLL файлов выполняет p/Invoke или x86, я могу использовать только x86 для этого приложения?