Очевидно, что при переносе проекта .NET Core в формат csproj существуют определенные условия, при которых результирующий csproj не получит явное <PlatformTarget>
.
А Visual Studio, похоже, неведут себя одинаково при обычной сборке и публикации.
В обеих базах он создает исполняемый файл PE32 только с 32-разрядной версией.Но при публикации он будет развертывать 64-битные библиотеки вместе, что приведет к вышеупомянутому BadImageFormatException
, в то время как этого не происходит в не публикуемой сборке .
Решение:
На странице project>Properties>Build
выберите значения platform target
до x64.Событие, если оно не имеет никакого визуального эффекта, явное будет добавлено к csproj при сохранении.
<PlatformTarget>x64</PlatformTarget>