【发布时间】:2019-10-08 22:09:13
【问题描述】:
我们有一个使用来自Microsoft.EntityFrameworkCore 的DbContext 的简单netcore 2.2 控制台应用程序。从控制台按原样启动时,它按预期工作。
但是我们决定将其用作dotnet CLI tool。它的 .csproj 文件包含:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AssemblyName>dotnet-dbupdate</AssemblyName>
<Title>Db Updater</Title>
<Version>1.0.1</Version>
<PackageId>DbUpdater</PackageId>
<Product>DbUpdater</Product>
<PackageVersion>1.0.1</PackageVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
</ItemGroup>
</Project>
我们使用dotnet pack 将其打包到我们的 Nuget 服务器。然后在目标文件夹中,我们有以下 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<DotNetCliToolReference Include="DbUpdater" Version="1.0.1" />
</ItemGroup>
</Project>
我们从这个文件夹中恢复它并执行:
dotnet restore
dotnet dbupdate
突然,在DbSet 的ToList 方法调用中,我们收到:
System.Data.SqlClient is not supported on this platform
确实存在将其作为 dotnet CLI 工具启动的问题。然而,我们未能得到这个问题是什么以及如何解决它。在网络上搜索并没有给我们任何尝试的想法。
【问题讨论】:
-
打包前代码运行正常吗?即,如果您在源目录中运行
dotnet run或在 IDE 中点击运行 -
在这篇文章的开头我写道:“当从控制台启动时,它按预期工作。”
-
啊,是的。道歉
-
在SqlServer旁边添加整个entityfw的引用解决了什么?
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" /> -
@Legion,不幸的是它没有。
标签: c# entity-framework .net-core dotnet-cli