У меня есть приложение-функция Azure, которое зависит от другой библиотеки классов для выполнения определенных функций.
Сведения о функции Azure: Целевая структура: net5.0 AzureFunctionsVersion: v3
Сведения о библиотеке классов: Целевая структура: net5.0
Я сослался на проект classlibrary в AzureFunction.
Код функции Azure:
Запуск.cs:
[assembly: FunctionsStartup(typeof(Startup))]
namespace MessageReceiver
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddTransient<IMailSender, MailSender>();
}
}
}
MessageReceiver.cs
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("[email protected]", "mytest");
_log.LogInformation($"C# Queue trigger function processed: {queueMessage}");
}
}
}
Библиотека классов: ReportUtility
IMailSender.cs:
public interface IMailSender
{
void SendPlaintextMail(string recipientEmail, string recipientName);
}
MailSender.cs
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: "[email protected]").To(emailAddress: recipientEmail, name: recipientName).Subject(subject: "Testing Email Subject").Body(body: "This is a plain text message").SendAsync();
}
}
При тестировании приложения я получаю сообщение об ошибке, как указано ниже:
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'.
Может ли кто-нибудь дать свои рекомендации по устранению этой проблемы





Чтобы избежать этого, попробуйте обновить приложение функции до версии 4.
Обновление следующих значений проекта до:
<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 Core 3.1 — не удалось загрузить файл или сборку System.Runtime, версия = 4.2.2.0
Спасибо @SuryasriKamini-MT за ваш ответ. Это помогло мне решить проблему :)