Ошибка сборки при использовании пакета WindowsAzure.Servicebus версии 4.1.10 в приложении .NET 4.5

Кажется, я не могу использовать эту библиотеку в проекте

Код серьезности Описание Состояние подавления строки файла проекта Ошибка CS0246 Не удалось найти тип или имя пространства имен WindowsAzure (вам не хватает директивы using или ссылки на сборку?) ClassLibrary2 \ Visual Studio 2017 \ Projects \ ClassLibrary2 \ ClassLibrary2 \ EntityListener.cs 24 Active

using WindowsAzure.Servicebus;

Я установил с помощью диспетчера пакетов nuget, и он определен в моем файле packages.config. Почему я не могу его использовать?

Packages.config:

<?xml version = "1.0" encoding = "utf-8"?>
<packages>
  <package id = "WindowsAzure.ServiceBus" version = "4.1.10" targetFramework = "net452" />
</packages>

Вы уверены, что это правильное пространство имен? Думаю нужен using Microsoft.Azure.ServiceBus; (источник)

Peter Bons 01.06.2018 10:50

В нем нет служебной шины.

nano 01.06.2018 10:52

какую версию пакета вы установили? Вы уверены, что пакет установлен правильно? Можете ли вы опубликовать свой реальный код?

Peter Bons 01.06.2018 10:54

Я скачал версию, совместимую с asp.net 4.5, так как этого требует проект. Так что не то же самое в вашем источнике @PeterBons

nano 01.06.2018 10:58

Получаете ли вы какие-либо предупреждения при сборке?

Peter Bons 01.06.2018 11:22

Я получаю сообщение об ошибке, что не может найти CS0246

nano 01.06.2018 11:26

Хорошо, но никаких предупреждений? Странный. К какому типу вы пытаетесь получить доступ из пространства имен?

Peter Bons 01.06.2018 11:28

Я просто пытаюсь записать в очередь Azure, но, поскольку я использую .NET 4.5, у меня, похоже, есть некоторые проблемы. Я должен использовать этот docs.microsoft.com/da-dk/dotnet/api/…, чтобы установить соединение с очередью, но поскольку я использую 4.5, я не могу установить Micosoft.azure.servicebus, у которого есть .netStandard 2.0

nano 01.06.2018 11:35

Мне нужно это использовать, но не могу ... в этом вся проблема ...

nano 01.06.2018 11:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
1 170
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш проект .NET версии ровно 4,5 (а не 4.5.x), вам нужно будет вернуться к пакету WindowsAzure.ServiceBus версия 4.1.3. Более того, это

Вот файл packages.config:

<?xml version = "1.0" encoding = "utf-8"?>
<packages>
  <package id = "WindowsAzure.ServiceBus" version = "4.1.3" targetFramework = "net45" />
</packages>

Кроме того, правильное пространство имен для использования следующее:

using Microsoft.ServiceBus.Messaging;

Найдите ниже образец консольного приложения .NET 4.5, которое отправляет сообщение в очередь служебной шины Azure. Обратите внимание, что это всего лишь образец и не готовый к производству код. Надеюсь, это поможет.

using System;
using System.Threading.Tasks;
using Microsoft.ServiceBus.Messaging;

namespace ServiceBusSample
{
    class Program
    {
        static void Main(string[] args)
        {
            const string ConnectionString = "your service bus connection string";
            const string QueueName = "your service bus queue name";
            string message = "Hello World!";
            string sessionId = Guid.NewGuid().ToString();

            SendMessage(ConnectionString, QueueName, sessionId, message).Wait();

            Console.WriteLine("Press <ENTER> to exit...");
            Console.ReadLine();
        }

        private static async Task SendMessage(string connectionString, string queueName, string sessionId, string message, string correlationId = null)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(connectionString))
                {
                    throw new ArgumentException("Service bus connection string cannot be null, empty or whitespace.");
                }

                if (string.IsNullOrWhiteSpace(queueName))
                {
                    throw new ArgumentException("Service bus queue name cannot be null, empty or whitespace.");
                }

                if (string.IsNullOrWhiteSpace(sessionId))
                {
                    throw new ArgumentException("Session id cannot be null, empty or whitespace.");
                }

                QueueClient queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName);

                BrokeredMessage brokeredMessage = new BrokeredMessage(message);
                brokeredMessage.SessionId = sessionId;

                await queueClient.SendAsync(brokeredMessage);
            }
            catch
            {
                // TODO: Handle exception appropriately (including logging)
                throw;
            }
        }
    }
}

Другие вопросы по теме