首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从程序集'System.Runtime.CompilerServices.AsyncVoidMethodBuilder‘、Version=4.2.2.0、Culture=neutral加载类型

无法从程序集'System.Runtime.CompilerServices.AsyncVoidMethodBuilder‘、Version=4.2.2.0、Culture=neutral加载类型
EN

Stack Overflow用户
提问于 2022-05-11 20:05:10
回答 1查看 544关注 0票数 1

我有一个天蓝色函数应用程序,它依赖于另一个类库来完成某些功能。

Azure函数详细信息: TargetFramework: net5.0 AzureFunctionsVersion : v3

ClassLibrary详细信息: TargetFramework: net5.0

我在AzureFunction中引用了类库项目。

Azure函数代码:

Startup.cs:

代码语言:javascript
运行
复制
[assembly: FunctionsStartup(typeof(Startup))]
namespace MessageReceiver
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddTransient<IMailSender, MailSender>();
        }
    }
}

MessageReceiver.cs

代码语言:javascript
运行
复制
namespace ProcessReportRequests
{
    public class MessageReceiverDataFunction
    {
        private const string QUEUE_NAME = "message-queue";
        private readonly IMailSender _mailSender;
        private readonly ILogger<MessageReceiverDataFunction> _log;
        public MessageReceiverDataFunction(IMailSender mailSender, ILogger<MessageReceiverDataFunction> log)
        {
            _mailSender = mailSender ?? throw new ArgumentNullException(nameof(mailSender));
            _log = log ?? throw new ArgumentNullException(nameof(log));
        }

        [FunctionName("MessageReceiver")]
        public void Run([QueueTrigger(QUEUE_NAME, Connection = "StorageConnectionString")] string queueMessage)
        {
            _mailSender.SendPlaintextMail("my.test@gmail.com", "mytest");
            _log.LogInformation($"C# Queue trigger function processed: {queueMessage}");
        }
    }
}

ClassLibrary :报告实用程序

IMailSender.cs:

代码语言:javascript
运行
复制
public interface IMailSender
{
    void SendPlaintextMail(string recipientEmail, string recipientName);
}

MailSender.cs

代码语言:javascript
运行
复制
public class MailSender : IMailSender
{
    public MailSender()
    {
    }

    public async void SendPlaintextMail(string recipientEmail, string recipientName)
    {
        var sender = new SmtpSender(() => new SmtpClient("xxx.yyyy.zzzz")
        {UseDefaultCredentials = false, Port = 10, Credentials = new NetworkCredential(recipientEmail, "xxxxxxxxxxxxxx"), EnableSsl = true, });
        Email.DefaultSender = sender;
        var email = await Email.From(emailAddress: "my.test@sendermail.com").To(emailAddress: recipientEmail, name: recipientName).Subject(subject: "Testing Email Subject").Body(body: "This is a plain text message").SendAsync();
    }
}

在测试应用程序时,我会得到一个错误,如下所述:

代码语言:javascript
运行
复制
2022-05-11T19:53:58.654 [Error] Executed 'MessageReceiver' (Failed, Id=f13f0402-7c74-4f39-a9e1-a65fa8f61af9, Duration=3ms)Could not load type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' from assembly 'System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

有人能提供他们的指导来解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-12 06:10:41

要避免这种情况,请尝试将函数应用程序更新到版本4。

更新下列项目值:

代码语言:javascript
运行
复制
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>

并使用以下命令:

az functionapp config appsettings set --settings FUNCTIONS_EXTENSION_VERSION=~4 -n <APP_NAME> -g <RESOURCE_GROUP_NAME>

参考资料:

从3.x迁移到4.x

.NET Core3.1-无法加载文件或程序集System.Runtime,Version=4.2.2.0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72207030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档