I've been researching a lot online but did not find a proper solution. I was trying to use Entity Framework Core with MySQL by using database-first scaffold method to mapping table model while always received this error when applied the command
Unable to retrieve project metadata. Ensure it's an MSBuild-based .NET Core project. If you're using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, Use the --msbuildprojectextensionspath option.
This is the command I am using to scaffold the database model:
Scaffold-DbContext "server=localhost;port=3306;user=root;password=1234;database=world" "Pomelo.EntityFrameworkCore.MySql" -OutputDir .\Models -f
And this is my .Net Core project setting:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>
For my case this error was solved by downloading latest dotnet-sdk-2.2.107-win-x64
for VS2017 and then dropping and updating database through cmd:
dotnet ef database drop --force --context <<dbcontext>> -s <<startup project directory>> -p <<project directory>>
dotnet ef database update --context <<dbcontext>> -s <<startup project directory>> -p <<project directory>>
Add this parameter to the end of your scaffold command "--msbuildprojectextensionspath".
来源:https://stackoverflow.com/questions/50672815/unable-to-retrieve-project-metadata-ensure-its-an-msbuild-based-net-core-proj