【发布时间】:2017-06-27 21:41:56
【问题描述】:
我在 .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(String assemblyPath, IntPtr loadedPeAddress, Int32 loadedPeSize, Int32& age, Guid& guid, UInt32& stamp)
在 System.Diagnostics.StackTraceSymbols.GetReader(字符串 assemblyPath,IntPtr loadedPeAddress,Int32 loadedPeSize,IntPtr inMemoryPdbAddress,Int32 inMemoryPdbSize)
在 System.Diagnostics.StackTraceSymbols.GetSourceLineInfo(字符串 assemblyPath,IntPtr loadedPeAddress,Int32 loadedPeSize,IntPtr inMemoryPdbAddress,Int32 inMemoryPdbSize,Int32 methodToken,Int32 ilOffset,String& sourceFile,Int32& sourceLine,Int32& sourceColumn)
在 System.Diagnostics.StackFrameHelper.InitializeSourceInfo(Int32 iSkip,布尔 fNeedFileInfo,异常异常)
在 System.Diagnostics.StackTrace.CaptureStackTrace(Int32 iSkip,布尔 fNeedFileInfo,线程 targetThread,异常 e)
在 System.Environment.GetStackTrace(异常 e,布尔需要文件信息)
在 System.Exception.GetStackTrace(布尔需要文件信息)
在 System.Exception.ToString(Boolean needFileLineInfo, Boolean 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”,但我需要 EF Core 和预览版,因为我使用的是 .Net 核心预览版。
这些是正确的命令:
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>
【问题讨论】:
标签: c# macos entity-framework asp.net-core