Код: Выделить всё
async Task SendEmailUsingOAuth()
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
var scope = "https://graph.microsoft.com/.default";
string tenantId = Configuration.Read(typeof(EMailOAuthTenant));
string client_id = PasswordEncoder.Instance.Decrypt(Configuration.Read(typeof(EMailOAuthClientId)));
string client_secret = PasswordEncoder.Instance.Decrypt(Configuration.Read(typeof(EMailOAuthSecret)));
var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var body = new SendMailPostRequestBody
{
Message = new Message
{
Subject = Title,
Body = new ItemBody
{
ContentType = IsHtml ? BodyType.Html : BodyType.Text,
Content = Body
},
ToRecipients = new List
{
new Recipient
{
EmailAddress = new EmailAddress
{
Address = EmailReceiver
}
}
}
}
};
await graphClient.Users[CredentialAccount].SendMail.PostAsync(body);
}
Оба пакета и их различные зависимости устанавливаются нормально, но я должен отметить, что в окне подтверждения установки Microsoft.Graph указано, что версия Azure.Core увеличится с 1.40 до 1.42. При просмотре в NuGet Azure.Identity версии 1.12 в качестве одной из зависимостей указывается «Azure.Core >= 1.40». Так что с Azure.Core.dll версии 1.42 все должно быть в порядке. Azure.Core.dll, который создается в каталоге отладки после компиляции, имеет версию 1.42.
Компиляция и запуск решения работают нормально, но когда дело доходит до вызова указанной выше задачи, я получаю следующая ошибка:

Нигде больше в моем коде я не ссылаюсь на Azure.Core. Поэтому я подозреваю несовместимость между версиями Microsoft.Graph и Azure.Identity.
Я обнаружил, что если добавить
Код: Выделить всё
Однако: теперь я получаю другую ошибку (в том же месте выполнения), которую я не знаю, как устранить. :

В качестве зависимостей Microsoft.Graph и Azure.Identity мой проект теперь ссылается на ряд пакетов Kiota Nuget.

Как ни странно, ни один из них не встроен в .dlls, когда я компилирую решение. Следовательно, я понимаю, почему получаю сообщение об ошибке: среда выполнения не находит эти библиотеки DLL в каталоге отладки.
Два вопроса:
Кто-нибудь знает точные версии пакетов Nuget Microsoft.Graph и Azure.Identity для использования в решении под .NET 4.8?
Как мне заставить указанные пакеты Kiota компилироваться в библиотеки DLL? Разве это не должно происходить автоматически при попытке запустить решение?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/790 ... ls-missing