提问人:Szyszka947 提问时间:8/19/2023 最后编辑:Szyszka947 更新时间:8/19/2023 访问量:59
FluentMigrator 在由于错误的程序集绑定而想要迁移时抛出
The FluentMigrator throws when want to migrate due to wrong assembly binding
问:
我在 NET7 中使用 FluentMigrator,并想迁移我的迁移。我使用:
dotnet tool install -g FluentMigrator.DotNet.Cli
我已经运行了命令:
dotnet fm migrate -a Conversations.API.dll -p postgres -c "omitted"
未处理的异常。System.IO.FileNotFoundException:无法加载文件或程序集 我得到了:
“System.Runtime,版本 = 7.0.0.0,区域性 = 中性,PublicKeyToken=b03f5f7f11d50a3a”。系统找不到指定的文件。 文件名:“System.Runtime,Version=7.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”
当我使用标志时,我得到异常,如下所示:--allowDirtyAssemblies
// Wrong assembly binding redirects for System.Runtime, loading it from disk anyway. pathomitted/System.Runtime.dll
// Wrong assembly binding redirects for Google.Protobuf, loading it from disk anyway. pathomitted/Google.Protobuf.dll
Unhandled exception. System.TypeLoadException: Could not load type 'Google.Protobuf.IBufferMessage' from assembly 'Google.Protobuf, Version=3.5.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'.
这是我的:.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.151" />
<PackageReference Include="FluentMigrator" Version="3.3.2" />
<PackageReference Include="FluentMigrator.Console" Version="3.3.2" />
<PackageReference Include="FluentMigrator.Runner.Postgres" Version="3.3.2" />
<PackageReference Include="Grpc.AspNetCore" Version="2.55.0" />
<PackageReference Include="Npgsql" Version="7.0.4" />
<PackageReference Include="PasetoBearer.Authentication" Version="2.0.0" />
<PackageReference Include="StackExchange.Redis" Version="2.6.122" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="Protos\get_conversations.proto" GrpcServices="Server" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="Protos\get_conversation_messages.proto" GrpcServices="Server" />
</ItemGroup>
</Project>
为什么会这样?
答:
0赞
Carypalmer
8/19/2023
#1
乍一看,我假设您的一个元素需要更新,或者您在不调整程序集绑定重定向的情况下进行了更新?
评论
0赞
Szyszka947
8/19/2023
说“元素”时,您的意思是NuGet包?我不知道什么是程序集绑定重定向。我将编辑我的问题并添加..csproj
0赞
Carypalmer
8/19/2023
由于你使用的是 Grpc.AspNetCore,因此它可能会将特定版本的 Google.Protobuf 作为依赖项拉取。您可能需要将 Google.Protobuf 包引用显式添加到您的项目中,并确保它使用的是兼容版本。
0赞
Carypalmer
8/19/2023
<PackageReference include=“Google.Protobuf” version=“[latest_version]” />
0赞
Szyszka947
8/19/2023
我有 8 个包,它有 30 个传递包(用作这 8 个包的依赖项的包)。你认为这是解决这个问题的正确方法吗?每 30 个依赖项安装一次?
0赞
Szyszka947
8/20/2023
好的,我做到了,但仍然不起作用。抛出相同的异常
评论