.NET5升级至6后NSB ScriptBuilderTask无法解析自有NuGet包程序集
问题:构建使用HC.Framework NuGet包的解决方案时出现NSB SqlPersistenceTask异常
问题背景
我们采用微服务架构,通过名为HC.Framework的NuGet包在各服务间共享代码。当前正在从.NET5升级至.NET6,构建使用该NuGet包(包含所有NSB相关配置)的解决方案时,出现如下异常。
错误日志
1>MSBUILD : error : SqlPersistenceTask: An unhandled exception occurred: 1>MSBUILD : error : Exception: 1>MSBUILD : error : Failed to resolve assembly: 'HC.Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 1>MSBUILD : error : StackTrace: 1>MSBUILD : error : at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters) 1>MSBUILD : error : at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name) 1>MSBUILD : error : at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) 1>MSBUILD : error : at Mono.Cecil.TypeReference.Resolve() 1>MSBUILD : error : at CecilExtensions.FindInTypeHierarchy[T](TypeDefinition type, Func`2 search) 1>MSBUILD : error : at SagaDefinitionReader.TryGetCoreSagaDefinition(TypeDefinition type, SagaDefinition& definition) 1>MSBUILD : error : at AllSagaDefinitionReader.GetSagas(Action`2 logger) 1>MSBUILD : error : at SagaWriter.WriteScripts(BuildSqlDialect dialect) 1>MSBUILD : error : at ScriptGenerator.Generate() 1>MSBUILD : error : at InnerTask.Execute() 1>MSBUILD : error : at NServiceBus.Persistence.Sql.SqlPersistenceScriptBuilderTask.Execute() 1>MSBUILD : error : Source: 1>MSBUILD : error : NServiceBus.Persistence.Sql.ScriptBuilderTask 1>MSBUILD : error :
Saga类代码片段
using System.Threading.Tasks; using NServiceBus; using HC.Swatson.Processor.Saga.Command; using HC.Framework.NSB; using HC.Swatson.Application.Command; using HC.Integration.ReplyMessages.Sendgrid; namespace HC.Swatson.Processor.Saga { public class SendWrongPredictionEmailSD : BaseSagaData<SendWrongPredictionEmailCMD> { public SendWrongPredictionEmailSD() : base(totalSteps: 2) { } } public class SendWrongPredictionEmailSAGA : Saga<SendWrongPredictionEmailSD>, IAmStartedByMessages<SendWrongPredictionEmailCMD>, IHandleMessages<ReplyMessage<SendWrongPredictionEmail2CMD>>, IHandleMessages<EmailHasBeenSentRM> { ... }
HC.Framework包中的NSB配置
[assembly: SqlPersistenceSettings( MsSqlServerScripts = true, MySqlScripts = false, OracleScripts = false, PostgreSqlScripts = false, ProduceOutboxScripts = true, ProduceSagaScripts = true, ProduceSubscriptionScripts = true, ProduceTimeoutScripts = true )]
补充排查信息
- 手动使用
dotnet工具生成脚本可正常运行,推测这是NSB的问题,已向其提交工单。
内容的提问来源于stack exchange,提问作者DjKillerMemeStar
相关产品推荐
相关产品推荐

