核心 3.1:无法 运行 .DLL 项目中的 dotnet ef 迁移(找不到框架)
Core 3.1: Cannot run dotnet ef migrations in .DLL project (framework not found)
我 运行 在将项目升级到 Core 3.1 后遇到问题。
我在 Class 库 (DLL) 中设置了 EF Core。当我运行
dotnet ef migrations add Init --context TransferDbContext --verbose
我收到错误:
Build started...
Build succeeded.
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1' was not found.
- The following frameworks were found:
3.1.7 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1&arch=x64&rid=win10-x64
调用失败是:
dotnet exec
--depsfile C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.deps.json
--additionalprobingpath C:\Users\dalby\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder"
--runtimeconfig C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.runtimeconfig.json
C:\Users\dalby\.dotnet\tools\.store\dotnet-ef.1.0\dotnet-ef.1.0\tools\netcoreapp3.1\any\tools\netcoreapp2.0\any\ef.dll migrations
add Init --context TransferDbContext
--assembly C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.dll
--startup-assembly C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.dll
--project-dir C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\
--language C#
--working-dir C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness
--verbose
--root-namespace DigitalEksamenIntegration.Business
我的
dotnet --info
列表如下:
.NET Core SDK (reflecting any global.json):
Version: 3.1.401
Commit: 5b6f5e5005
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk.1.401\
Host (useful for support):
Version: 3.1.7
Commit: fcfdef8d6b
.NET Core SDKs installed:
3.1.401 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
和dotnet-core-uninstall list
列表
This tool can not uninstall versions of the runtime or SDK that are
- SDKs installed using Visual Studio 2019 Update 3 or later.
- SDKs and runtimes installed via zip/scripts.
- Runtimes installed with SDKs (these should be removed by removing that SDK).
The versions that can be uninstalled with this tool are:
.NET Core SDKs:
3.1.401 x64 [Used by Visual Studio. Specify individually or use --force to remove]
.NET Core Runtimes:
3.1.7 x64
2.2.7 x64
我一直在尝试设置一个 global.json
但它似乎没有效果。
我的cjsproj
是这样的(缩小版):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>DigitalEksamenIntegration.Business</RootNamespace>
<RuntimeFrameworkVersion>3.1</RuntimeFrameworkVersion>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework">
<HintPath>..\DigitalEksamenIntegration.Web\Lib\EntityFramework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="Migrations\" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services" />
</ItemGroup>
<ItemGroup>
<None Update="MailReport_Layout.template.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
<None Update="MailReport_StudentsMissingInRegistrations.template.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
</ItemGroup>
</Project>
一些报告表明这是一个工具问题,所以我尝试了:
dotnet tool uninstall -g dotnet-ef
dotnet tool install -g dotnet-ef --version 3.1.7
但这也没有用。
感谢任何帮助。
提前致谢。
亲切的问候
索伦
试试这个:
dotnet tool install -g dotnet-ef --version 3.1.0
在您从 nuget 安装的项目中
Microsoft.EntityFrameworkCore.Design
然后,添加 --verbose
以查看可能的警告
dotnet ef migrations add Init --context TransferDbContext --verbose
我找到了解决方案 - 或者更确切地说是规避:
我编辑了位于输出目录中的 runtimeconfig.json
。在我的例子中:bin\Debug\netcoreapp3.1\win-x64\<ProjectName>.runtimeconfig.json
(将 <ProjectName>
替换为您的项目名称)。
字段 version
之前包含版本号 3.1
。我编辑它以包含值 3.1.7
:
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.7"
}
}
}
我终于可以迁移我的数据库了。
我 运行 在将项目升级到 Core 3.1 后遇到问题。
我在 Class 库 (DLL) 中设置了 EF Core。当我运行
dotnet ef migrations add Init --context TransferDbContext --verbose
我收到错误:
Build started...
Build succeeded.
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1' was not found.
- The following frameworks were found:
3.1.7 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1&arch=x64&rid=win10-x64
调用失败是:
dotnet exec
--depsfile C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.deps.json
--additionalprobingpath C:\Users\dalby\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder"
--runtimeconfig C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.runtimeconfig.json
C:\Users\dalby\.dotnet\tools\.store\dotnet-ef.1.0\dotnet-ef.1.0\tools\netcoreapp3.1\any\tools\netcoreapp2.0\any\ef.dll migrations
add Init --context TransferDbContext
--assembly C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.dll
--startup-assembly C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\bin\Debug\netcoreapp3.1\win-x64\DigitalEksamenIntegrationBusiness.dll
--project-dir C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness\
--language C#
--working-dir C:\tfs\DigitalEksamenIntegration\DigitalEksamenIntegrationBusiness
--verbose
--root-namespace DigitalEksamenIntegration.Business
我的
dotnet --info
列表如下:
.NET Core SDK (reflecting any global.json):
Version: 3.1.401
Commit: 5b6f5e5005
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk.1.401\
Host (useful for support):
Version: 3.1.7
Commit: fcfdef8d6b
.NET Core SDKs installed:
3.1.401 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
和dotnet-core-uninstall list
列表
This tool can not uninstall versions of the runtime or SDK that are
- SDKs installed using Visual Studio 2019 Update 3 or later.
- SDKs and runtimes installed via zip/scripts.
- Runtimes installed with SDKs (these should be removed by removing that SDK).
The versions that can be uninstalled with this tool are:
.NET Core SDKs:
3.1.401 x64 [Used by Visual Studio. Specify individually or use --force to remove]
.NET Core Runtimes:
3.1.7 x64
2.2.7 x64
我一直在尝试设置一个 global.json
但它似乎没有效果。
我的cjsproj
是这样的(缩小版):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>DigitalEksamenIntegration.Business</RootNamespace>
<RuntimeFrameworkVersion>3.1</RuntimeFrameworkVersion>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework">
<HintPath>..\DigitalEksamenIntegration.Web\Lib\EntityFramework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="Migrations\" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services" />
</ItemGroup>
<ItemGroup>
<None Update="MailReport_Layout.template.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
<None Update="MailReport_StudentsMissingInRegistrations.template.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
</ItemGroup>
</Project>
一些报告表明这是一个工具问题,所以我尝试了:
dotnet tool uninstall -g dotnet-ef
dotnet tool install -g dotnet-ef --version 3.1.7
但这也没有用。
感谢任何帮助。
提前致谢。
亲切的问候 索伦
试试这个:
dotnet tool install -g dotnet-ef --version 3.1.0
在您从 nuget 安装的项目中
Microsoft.EntityFrameworkCore.Design
然后,添加 --verbose
以查看可能的警告
dotnet ef migrations add Init --context TransferDbContext --verbose
我找到了解决方案 - 或者更确切地说是规避:
我编辑了位于输出目录中的 runtimeconfig.json
。在我的例子中:bin\Debug\netcoreapp3.1\win-x64\<ProjectName>.runtimeconfig.json
(将 <ProjectName>
替换为您的项目名称)。
字段 version
之前包含版本号 3.1
。我编辑它以包含值 3.1.7
:
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.7"
}
}
}
我终于可以迁移我的数据库了。