You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When setting a WinForms project with <PlatformTarget>x86</PlatformTarget> I cannot add a migration because of the following error: Could not load assembly 'EFCorex86MigrationFail'. Ensure it is referenced by the startup project 'EFCorex86MigrationFail'.. That happens when Context is in the startup project. When having a solution where Context is in a separate project, this error happens: System.IO.FileNotFoundException: Could not load file or assembly 'EFCorex86MigrationFail, Culture=neutral, PublicKeyToken=null'.
Include your code
Reproduction: https://github.com/twojnarowski/EFCorex86MigrationFail
Steps: Create WinForms app on .NET8, add 3 EF Core nugets - Design, Tools and SQLServer. Create a Context class. Run add-migration command - everything works. Change project settings to target platform x86, run add-migration, migration fails.
Include verbose output
Issue when Context in Startup Project:
PM> add-migration InitialMigration
Build started...
Build succeeded.
Could not load assembly 'EFCorex86MigrationFail'. Ensure it is referenced by the startup project 'EFCorex86MigrationFail'.
Issue when Context in a separate project:
PM> add-migration InitialMigration -context EFContext
Build started...
Build succeeded.
System.IO.FileNotFoundException: Could not load file or assembly 'EFCorex86MigrationFail, Culture=neutral, PublicKeyToken=null'. Nie można odnaleźć określonego pliku.
File name: 'EFCorex86MigrationFail, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext, RuntimeAssembly requestingAssembly, Boolean throwOnFileNotFound)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.get_StartupAssembly()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.get_MigrationsOperations()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType, String namespace)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Could not load file or assembly 'EFCorex86MigrationFail, Culture=neutral, PublicKeyToken=null'. Nie można odnaleźć określonego pliku.
Include provider and version information
EF Core version: 8.0.11
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: NET 8.0
Operating system: Windows 11
IDE: Visual Studio 2022 17.4
Workaround:
Set project back to Any CPU, create migration, update database. Return project back to x86, everything works.
The text was updated successfully, but these errors were encountered:
I've seen this before. Simply put this is expected behaviour.
I am almost certain that the .Net SDK you have installed is the x64 version.
The thing is when you do the migration, .Net (usually dotnet.exe) needs to load your project so that it can call into it for the migrations and the database connection. However since the SDK is x64 and your project is x86 there is a mismatch and your project fails to load.
Obviously targeting x64 will work. Any CPU will work for whichever .Net you have (x64, x86 and possibly ARM).
Is there a particular need to specifically use x86? If so, it would be better to have the x86 .Net SDK installed and used as default
Have you changed the default project in visual studio integrated console to the the project that include the context?
@m1nh101 when running x64 everything works, so you can assume that I did that :)
Is there a particular need to specifically use x86? If so, it would be better to have the x86 .Net SDK installed and used as default
@ChrisJollyAU Yes, there is. I am referencing a dll API from this project and it only works in x86. But I haven't downloaded any specific .NET SDK apart from what VS Installer installed. I will try to download x86 SDK and try with it.
File a bug
When setting a WinForms project with
<PlatformTarget>x86</PlatformTarget>
I cannot add a migration because of the following error:Could not load assembly 'EFCorex86MigrationFail'. Ensure it is referenced by the startup project 'EFCorex86MigrationFail'.
. That happens when Context is in the startup project. When having a solution where Context is in a separate project, this error happens:System.IO.FileNotFoundException: Could not load file or assembly 'EFCorex86MigrationFail, Culture=neutral, PublicKeyToken=null'.
Include your code
Reproduction: https://github.com/twojnarowski/EFCorex86MigrationFail
Steps: Create WinForms app on .NET8, add 3 EF Core nugets - Design, Tools and SQLServer. Create a Context class. Run
add-migration
command - everything works. Change project settings to target platform x86, runadd-migration
, migration fails.Include verbose output
Issue when Context in Startup Project:
Issue when Context in a separate project:
Include provider and version information
EF Core version: 8.0.11
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: NET 8.0
Operating system: Windows 11
IDE: Visual Studio 2022 17.4
Workaround:
Set project back to
Any CPU
, create migration, update database. Return project back tox86
, everything works.The text was updated successfully, but these errors were encountered: