Как уже упоминали другие, когда вы используете другие библиотеки, созданные для конкретной платформы, вам может потребоваться указать эту платформу.Одним хорошим примером является COM.
Допустим, у вас есть 32-битный компонент COM (который больше всего), а клиентская ОС 32-битная.Если вы скомпилируете для AnyCPU, он будет работать нормально, потому что он будет JIT к собственному коду x86, поскольку вы работаете в 32-битной системе.
Теперь допустим, что у вас есть тот же компонент COM и клиентская ОСэто 64 битВ Windows, когда COM-компонент будет зарегистрирован, он будет зарегистрирован в 32-битном разделе реестра (WOW6432Node, я думаю).Поэтому, если ваше приложение скомпилировано для «AnyCPU», оно будет собственным 64-разрядным приложением и не сможет вызывать ваш COM-компонент (в результате класс не будет зарегистрирован), поскольку оно будет выглядеть в 64-разрядном реестре.Если вы скомпилируете для x64, вы получите ту же ошибку (поскольку после JIT это приведет к тому же самому нативному коду.) Но если вы скомпилируете для x86, все будет работать нормально.