![](/img/trans.png)
[英]Scaffold-DbContext Fails. System.TypeLoadException: Could not load type 'Microsoft.EntityFrameworkCore.Internal.ProductInfo' on .NET Core
[英].Net core scaffold dbcontext fails with Could not load type 'System.IO.File'
我在.Net core 2(预览版1)中创建了一个classlib库。
然后,我为实体框架添加了软件包。
现在我想搭建一个数据库:
dotnet ef dbcontext scaffold "azure connection string" Microsoft.EntityFrameworkCore.SqlServer
但我收到此错误:
未处理的异常:System.TypeLoadException:无法从程序集“ System.IO.FileSystem,版本= 4.0.2.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”中加载类型“ System.IO.File”。
在System.Diagnostics.StackTraceSymbols.GetPdbPathFromPeStream(字符串assemblyPath,IntPtr加载PeAddress,Int32加载PeSize,Int32&年龄,Guid&guid,UInt32&戳)
在System.Diagnostics.StackTraceSymbols.GetReader处(字符串assemblyPath,IntPtr加载的PeAddress,Int32加载的PeSize,IntPtr的inMemoryPdbAddress,Int32的MemoryPdbSize)
在System.Diagnostics.StackTraceSymbols.GetSourceLineInfo(字符串assemblyPath,IntPtr已加载PeAddress,Int32已加载PeSize,IntPtr inMemoryPdbAddress,Int32 inMemoryPdbSize,Int32 methodToken,Int32 ilOffset,字符串和sourceFile,Int32&sourceLine,Int32&sourceColumn)
在System.Diagnostics.StackFrameHelper.InitializeSourceInfo(Int32 iSkip,布尔值fNeedFileInfo,异常异常)
在System.Diagnostics.StackTrace.CaptureStackTrace(Int32 iSkip,布尔值fNeedFileInfo,线程targetThread,异常e)
在System.Environment.GetStackTrace(Exception e,布尔NeedFileInfo)
在System.Exception.GetStackTrace(Boolean needFileInfo)
在System.Exception.ToString(Boolean needFileLineInfo,布尔NeedMessage)
在Microsoft.EntityFrameworkCore.Tools.Program.Main(String [] args)
这是项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
</Project>
我是否需要添加额外的包裹? 这是错误吗?
回答:
Alaa Masoud的答案是正确的,但是这里有一些更多信息。
我做了一个'dotnet添加包EntityFramework',但是由于我使用的是.Net核心预览,因此我需要EF Core和预览版本。 这些是正确的命令:
dotnet add package -v 2.0.0-preview2-final Microsoft.EntityFrameworkCore.SqlServer
dotnet add package -v 2.0.0-preview2-final Microsoft.EntityFrameworkCore.Design
dotnet add package -v 2.0.0-preview2-final Microsoft.EntityFrameworkCore.Tools.DotNet
我还将项目类型从“ netstandard2.0”更改为“ netcoreapp2.0”。 脚手架似乎只适用于可运行的项目。
这是我的新项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0-preview2-final" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0-preview2-final" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0-preview2-final" />
</ItemGroup>
</Project>
您正在引用EF 6.1和EFCore 1.1.2。 从project.json中删除<PackageReference Include="EntityFramework" Version="6.1.3" />
,然后将EFCore的版本更改为2.0.0-preview2-final
因为您的目标是.net标准2.0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.