Инициализация Intellisense завершена, но при попытке загрузить документ возникла ошибка Visual Studio

Обновлено: 20.11.2024

В ноябре прошлого года бесплатная пробная версия SAP Web IDE была прекращена, и разработчикам было предложено начать использовать SAP Business Application Studio ( BAS ). Я настроил среду разработки на SAP BAS и перенес все свои существующие проекты. Однако я столкнулся с множеством проблем с этой новой IDE. Затем я наткнулся на Visual Studio Code, который широко используется разработчиками по всему миру. В этой записи блога для начинающих я расскажу, как шаг за шагом настроить Visual Studio Code и разработать приложения UI5.

Код Visual Studio

Visual Studio Code ( VSCode ) – это мощный и легкий редактор исходного кода, доступный для Windows, macOS и Linux. Он поставляется со встроенной поддержкой многих языков, таких как JavaScript, TypeScript, NodeJS и т. д. Поскольку он устанавливается локально в вашей системе, он быстро загружается, и разработчики могут сосредоточиться на описаниях проблем, а не беспокоиться о сбоях.

  • Автодополнение кода с помощью Intellisense
  • Параметры отладки
  • Мощные функции редактирования
  • Навигация по коду и рефакторинг

Шаги по созданию базового приложения UI5 с помощью VSCode

Установите код Visual Studio

Вы можете загрузить и установить Visual Studio Code по следующему URL-адресу:

Visual Studio Code использует множество пакетов и модулей NodeJS даже для разработки пользовательского интерфейса SAP, поэтому я бы рекомендовал установить NodeJS вместе с ним.

Вы можете скачать и установить NodeJS по следующему URL-адресу:

Установить модули узла

Visual Studio Code использует различные модули узлов для запуска приложения UI5/Fiori.

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

Выполните приведенную ниже команду в Терминале ниже, чтобы установить все модули узла.

Установите расширения UI5 и Fiori для VSCode

Это одноразовая настройка.

Откройте код Visual Studio. На левой вкладке есть значок «Расширения» (обведен синим). Нажмите на нее.

Исходный экран VSCode

Вы сможете увидеть все пакеты расширений, доступные для VSCode.

Мы будем использовать инструменты SAP Fiori: расширение, доступное для SAP Business Application Studio и Visual Studio Code, которое помогает нам разрабатывать приложения UI5/Fiori.

Найдите fiori и установите пакеты, отмеченные красным на изображении ниже. Для установки нажмите синюю кнопку «Установить». Поскольку он уже установлен в моей системе, он не отображается. После установки пакета кнопка «Установить» исчезнет.

Расширения инструментов SAP Fiori

После того, как все пакеты будут успешно установлены, нажмите Ctrl + Shift + P. Это запустит панель команд, с помощью которой вы сможете выполнять множество доступных команд.

Выберите Fiori: открыть генератор приложений

Открыть генератор приложений

В Visual Studio Code есть множество генераторов, которые представляют собой не что иное, как мастера для создания ваших приложений. Позвольте мне продемонстрировать, как его использовать.

Экран будет выглядеть так, как показано ниже. Сначала вы можете не увидеть доступных генераторов). Нам нужно установить соответствующий генератор.

Мастер приложений — экран генератора

Добавить генератор для разработки SAP UI5

Нажмите «Изучить и установить генераторы» в правом верхнем углу. Вы увидите экран ниже.

Введите fiori в строку поиска (подчеркнуто синим цветом)

Изучить и установить генератор

Редактировать: Генератор обновлен в VSCode

Генератор обновлен в Visual Studio Code (генератор фристайла Fiori и генератор элементов Fiori были объединены в один), поэтому я обновил приведенный ниже контент последней информацией.

Вы сможете увидеть @sap/generator-fiori (подчеркнуто красным). Нажмите синюю кнопку «Установить» под ним.

Поскольку он у меня уже установлен, у меня отображается кнопка "Удалить".

Генератор фристайла Fiori

После установки вы получите системное сообщение ниже о том, что оно установлено.

Запустите Command Pallete (нажмите Ctrl + Shift + P) и найдите Fiori: Open Application Generator.

Запустите генератор

Выберите генератор SAP Fiori Freestyle из раскрывающегося списка и нажмите «Пуск» (синяя кнопка ниже)

Выбор плана этажа: выберите приложение SAP UI5 и нажмите "Далее".

Источник данных и выбор службы

Источник данных: нажмите раскрывающееся меню и выберите «Нет». После этого нажмите Далее.

Поскольку это демонстрация простого приложения UI5, я не включаю какой-либо источник данных. Я продемонстрирую это в следующих блогах.

Настройка плана этажа

Введите название представления. По умолчанию это будет View1. Нажмите «Далее».

Атрибуты проекта

Введите соответствующие сведения о проекте, такие как имя модуля, название приложения, путь и т. д. После этого нажмите "Готово".

После нажатия кнопки "Готово". Ниже вы можете увидеть сообщение: «Установка зависимостей»

После установки зависимостей мы можем увидеть всплывающее окно ниже. Мы можем либо открыть его в новом рабочем пространстве, либо по умолчанию оно будет добавлено в существующее рабочее пространство.

Давайте выберем «Открыть в новой рабочей области». Ниже показано, как будет выглядеть экран.

Структура проекта аналогична Web IDE, за исключением одного или двух дополнительных файлов, специфичных для VSCode.

Написание нашего кода для приложения

Давайте откроем наш файл представления из папки веб-приложения.

Давайте добавим простой элемент, например. Кнопка внутри нашей страницы. Сохраните файл. ( Ctrl + S )

Давайте добавим логику в функцию нажатия в соответствующем файле контроллера. Сохраните файл. ( Ctrl + S )

Слева выберите значок "Выполнить" (выделен синим цветом ниже).

Вверху выберите приложение, которое нам нужно запустить, из раскрывающегося списка и нажмите зеленую кнопку воспроизведения рядом с ним.

Вы можете увидеть выполнение инструкций по запуску приложения на экране терминала ниже.

Приложение открывается в браузере по умолчанию.

Автоматически откроется браузер по умолчанию и запустится приложение.

Вы можете приостановить, остановить или перезапустить приложение из элементов управления (на рисунке ниже)

После остановки приложения эти элементы управления исчезнут.

Ну, это все для этой записи в блоге.

Это моя первая запись в блоге, поэтому я буду очень благодарен всем за отзывы.

Спасибо, что прочитали мою запись в блоге.

Что дальше?

Пожалуйста, прочитайте мою следующую запись в блоге о том, как создать приложение UI5 в Visual Studio Code, которое использует службы OData из локальной системы SAP.

Обсудите и поддержите проблему с Microsoft Visual Studio в программном обеспечении и приложениях для Windows 10, чтобы решить проблему; Привет, я получаю эту ошибку, которую я не знаю, как исправить, поэтому, если кто-нибудь ответит, пожалуйста, это мне очень поможет. Так что проблема в том, что когда. Обсуждение в разделе «Программное обеспечение и приложения для Windows 10», начатое MarkoNovitovic, 24 февраля 2021 г.

Проблема с Microsoft Visual Studio

Проблема с Microsoft Visual Studio — Похожие темы — Проблема Microsoft Visual

Проблема Visual Studio Code

Проблема Visual Studio Code: я даже не знаю, как задать этот вопрос, но что случилось с зачеркнутыми строками и словом «Музыка». Как это отключить? Если я щелкаю правой кнопкой мыши, он говорит «заменить» или «отклонить». Если я выберу замену, туда поместится слово «Музыка». Почему он вообще думает, что я хочу.

Визуальная студия

визуальная студия

visual studio: у меня были серьезные проблемы с мерцанием экрана. Не диспетчер устройств, поэтому я начал удалять приложения. Потом переустановка. Внезапно через несколько недель мерцание исчезло, и я не знаю, что его вызвало. Я понятия не имею, что такое Visual Studio, но я удалил несколько версий.

визуальная студия

ЯВЛЯЕТСЯ ЛИ Microsoft Visual C++ ТАКИМ же ВИЗУАЛЬНЫМ STUDIO?

ЯВЛЯЕТСЯ ЛИ Microsoft Visual C++ ТАКИМ ЖЕ ТО ЖЕ, КАК VISUAL STUDIO?: ЯВЛЯЕТСЯ ЛИ Microsoft Visual C++ ТАКИМ ЖЕ ТАКИМ VISUAL STUDIO? ПОЧЕМУ НА МОЕМ КОМПЬЮТЕРЕ МНОГО РАЗНЫХ ФАЙЛОВ C++? ЕСЛИ МНЕ НУЖЕН ТО, ЧТО МНЕ НЕ НУЖНО ЗАПУСКАТЬ ПРОГРАММУ, КАК Я УЗНАЮ? ПОЯВЛЯЕТСЯ КОД ОШИБКИ.

Проблема компиляции Visual Studio

Проблема компиляции Visual Studio. Как решить проблему, из-за которой программа не может найти файл проекта при компиляции. Настройка была по умолчанию и должна быть найдена Visual Studio, но я получаю окно сообщения об этом. С кодом проблем нет, просто не могу найти файл. Я могу вытащить.

Майкрософт Visual Studio 2008

Microsoft Visual Studio 2008: у меня возникла проблема с публикацией проекта, который я мог опубликовать ранее. Первоначально я написал это в 2015 году и пытался обновить программное обеспечение и опубликовать его. Я получаю сообщение об ошибке; Ошибка 2 Произошла ошибка при подписании: Не удалось подписать.

В следующих часто задаваемых вопросах приведены решения распространенных проблем с запуском и использованием Solargraph.

Нет Intellisense для установленных драгоценных камней

В моей системе установлен гем, который требуется в моем коде, но я не получаю для него никакого интеллекта в своей IDE (без автозаполнения, документации и т. д.).

Самая распространенная причина отсутствия драгоценного камня в вашем intellisense – отсутствие документации YARD. Вы можете создать документацию, запустив yard gems в командной строке.

Нет Intellisense для кэшированных или приобретенных драгоценных камней

У меня есть проект, в котором хранится локальный каталог кэшированных или продаваемых драгоценных камней, и я не получаю для них никакой интеллектуальной обработки в своей IDE.

Вам нужно использовать Bundler, чтобы документировать кешированные/продаваемые драгоценные камни и делать их доступными для языкового сервера:

Solargraph использует неправильную версию Ruby

Я использую rbenv или rvm, и когда я открываю проект в своем редакторе, Solargraph запускает другую версию Ruby, чем я ожидал.

Код VS

В VS Code Solargraph пытается определить правильную версию Ruby для запуска в зависимости от вашей рабочей среды.

Линукс

Подтвердите, что ваша среда настроена правильно из командной строки.

Если версии Ruby и Solargraph верны, но Solargraph по-прежнему не работает в редакторе, попробуйте открыть его из командной строки, например, запустите код . (обратите внимание на точку в конце команды). Если это работает должным образом, может возникнуть проблема с интеграцией вашей оболочки с rvm/rbenv. Официально поддерживаются только оболочки bash и zsh.

MacOS

Предложения для Linux также должны работать на MacOS, за одним исключением: вам нужно добавить команду кода в PATH, чтобы запустить ее из командной строки. Дополнительную информацию см. в статье Код Visual Studio для MacOS.

Выбор конкретного исполняемого файла

Расширение Atom использует те же методы, что и расширение VS Code, для интеграции с rvm/rbenv, поэтому в основном применимы те же рекомендации.

Другие клиенты

Информацию о редакторах, отличных от VS Code или Atom, см. в документации по программному обеспечению или расширению.

Высокая загрузка ЦП

Всякий раз, когда я использую языковой сервер Solargraph, ОС сообщает о чрезвычайно высокой загрузке ЦП своим процессом.

Загрузка ЦП иногда резко возрастает при инициализации языкового сервера, особенно для очень больших рабочих областей. Он должен вернуться в нормальное состояние после завершения инициализации.

Если загрузка ЦП остается неизменно высокой, см. дополнительные советы по ускорению работы Solargraph в разделе "Производительность" или попробуйте выполнить сканирование для выявления проблем.

Проблемы при установке на Mac

Я получаю сообщения об ошибках при создании собственных расширений в MacOS.

Ошибки при создании собственных расширений обычно означают, что у вас не установлены заголовки разработки Ruby. Процесс установки зависит от вашей версии MacOS.

Во-первых, убедитесь, что у вас установлен xcode:

MacOS 10.14 перестала устанавливать заголовки Ruby по умолчанию. Возможно, вам придется установить их самостоятельно с некоторыми вариациями этого:

Это может быть необходимо в XCode 11:

Есть дополнительные обсуждения этой проблемы, включая дополнительные ссылки, в выпуске vscode-solargraph на GitHub.

О до-диезе

Об этом учебнике по программированию на C Sharp

Если вы не знаете, является ли используемый вами объект типом значения или ссылочным типом, вы можете столкнуться с некоторыми неожиданностями. Например:

Как видите, объекты Point и Pen были созданы одинаково, но значение point1 осталось неизменным, когда новое значение координаты X было присвоено point2 , тогда как значение Pen1 было изменено, когда для pen2 был назначен новый цвет. Таким образом, мы можем вывести, что точки point1 и point2 содержат собственную копию объекта Point, тогда как pen1 и pen2 содержат ссылки на один и тот же объект Pen. Но как мы можем узнать это, не проведя этот эксперимент?

Ответ заключается в том, чтобы просмотреть определения типов объектов (что можно легко сделать в Visual Studio, поместив курсор на имя типа объекта и нажав F12):

Многие (но не все) типы значений имеют свойство IsEmpty, которое можно проверить, чтобы убедиться, что оно равно значению по умолчанию:

Когда вы проверяете, была ли переменная инициализирована или нет, убедитесь, что вы знаете, какое значение будет иметь неинициализированная переменная этого типа по умолчанию, и не полагайтесь на то, что она равна нулю..

Хотя многие программисты используют оператор == для сравнения строк, на самом деле это один из наименее желательных методов для использования, прежде всего потому, что он не указывает явно в коде, какой тип сравнения хотел.

Первая сигнатура метода (т. е. без параметра compareType) фактически аналогична использованию оператора ==, но имеет то преимущество, что она явно применяется к строкам. Он выполняет порядковое сравнение строк, которое в основном представляет собой побайтовое сравнение. Во многих случаях это именно тот тип сравнения, который вам нужен, особенно при сравнении строк, значения которых устанавливаются программно, таких как имена файлов, переменные среды, атрибуты и т. д. В этих случаях, если порядковое сравнение действительно является правильным типом сравнения в этой ситуации, единственным недостатком использования метода Equals без compareType является то, что кто-то, читающий код, может не знать, какой тип сравнения вы делаете.

Однако использование сигнатуры метода Equals, которая включает в себя compareType при каждом сравнении строк, не только сделает ваш код более понятным, но и заставит вас явно задуматься о том, какой тип сравнения вам нужно выполнить. Это стоит сделать, потому что даже если английский язык не может обеспечить много различий между порядковыми и учитывающими культуру сравнениями, другие языки предоставляют множество, и игнорирование возможностей других языков открывает перед вами большой потенциал для ошибки в пути. Например:

Самая безопасная практика — всегда указывать параметр compareType в методе Equals. Вот несколько основных рекомендаций:

  • При сравнении строк, которые были введены пользователем или должны отображаться пользователю, используйте сравнение с учетом языка и региональных параметров ( CurrentCulture или CurrentCultureIgnoreCase ).
  • При сравнении программных строк используйте порядковое сравнение ( Ordinal или OrdinalIgnoreCase ).
  • InvariantCulture и InvariantCultureIgnoreCase обычно не следует использовать, за исключением очень ограниченного числа случаев, поскольку порядковые сравнения более эффективны. Если необходимо сравнение с учетом культуры, его обычно следует выполнять с текущей культурой или другой конкретной культурой.

можно просто написать:

LINQ отлично подходит для абстрагирования задачи управления коллекциями, независимо от того, являются ли они объектами в памяти, таблицами базы данных или XML-документами. В идеальном мире вам не нужно было бы знать, что собой представляют лежащие в основе объекты. Но ошибка здесь в предположении, что мы живем в идеальном мире. На самом деле, одинаковые операторы LINQ могут возвращать разные результаты при выполнении с одними и теми же данными, если эти данные имеют другой формат.

Например, рассмотрим следующее утверждение:

Что произойдет, если один из объектов account.Status будет равен «Активный» (обратите внимание на заглавную букву А)? Ну, если бы myAccounts был объектом DbSet (который был настроен с конфигурацией по умолчанию без учета регистра), выражение where все равно соответствовало бы этому элементу. Однако если бы myAccounts находились в массиве в памяти, они бы не совпадали и, следовательно, давали бы другой общий результат.

Но подождите минутку. Когда мы говорили о сравнении строк ранее, мы видели, что оператор == выполняет порядковое сравнение строк. Так почему же в этом случае оператор == выполняет сравнение без учета регистра?

Как упоминалось ранее, операторы LINQ работают с любым объектом, который реализует IEnumerable. Например, следующая простая функция суммирует балансы на любом наборе счетов:

Ответ заключается в том, что Sum() не является методом, определенным в интерфейсе IEnumerable. Скорее, это статический метод (называемый «метод расширения»), определенный в классе System.Linq.Enumerable:

Так чем же метод расширения отличается от любого другого статического метода и что позволяет нам получить к нему доступ в других классах?

Отличительной характеристикой метода расширения является модификатор this в его первом параметре. Это «волшебство», которое идентифицирует его для компилятора как метод расширения. Тип параметра, который он изменяет (в данном случае IEnumerable ), обозначает класс или интерфейс, который затем появится для реализации этого метода.

(Кроме того, нет ничего волшебного в сходстве между именем интерфейса IEnumerable и именем класса Enumerable, для которого определен метод расширения. Это сходство — просто произвольный стилистический выбор.)

При таком понимании мы также можем видеть, что функцию sumAccounts, которую мы представили выше, можно было бы вместо этого реализовать следующим образом:

Даже разработчики, знакомые с методами расширения, все равно время от времени попадаются, когда в объекте есть метод с таким же именем, но его сигнатура метода слегка отличается от сигнатуры метода расширения. Много времени может быть потрачено впустую на поиск опечатки или ошибки, которой просто нет.

Конечно, вы также можете написать свои собственные методы расширения. Поймите, однако, что хотя кажется, что методы расширения вызываются точно так же, как и обычные методы экземпляра, на самом деле это всего лишь иллюзия. В частности, ваши методы расширения не могут ссылаться на закрытые или защищенные члены класса, который они расширяют, и поэтому не могут служить полной заменой более традиционному наследованию классов.

Хотя могут быть случаи, когда слишком много вариантов так же плохо, как и недостаточно, с объектами-коллекциями дело обстоит иначе. Количество доступных вариантов определенно может работать в вашу пользу. Потратьте немного больше времени заранее, чтобы изучить и выбрать оптимальный тип коллекции для ваших целей. Скорее всего, это повысит производительность и уменьшит вероятность ошибки.

Если существует тип коллекции, специально предназначенный для типа имеющегося у вас элемента (например, строка или бит), склоняйтесь к использованию его в первую очередь. Реализация, как правило, более эффективна, когда она нацелена на определенный тип элемента.

В среде CLR используется сборщик мусора, поэтому вам не нужно явно освобождать память, созданную для какого-либо объекта. На самом деле, вы не можете. В C нет эквивалента оператору удаления C++ или функции free(). Но это не значит, что вы можете просто забыть обо всех объектах после того, как закончили их использовать. Многие типы объектов инкапсулируют некоторые другие типы системных ресурсов (например, файл на диске, соединение с базой данных, сетевой сокет и т. д.). Если оставить эти ресурсы открытыми, общее количество системных ресурсов может быстро истощиться, что приведет к снижению производительности и, в конечном итоге, к сбоям программы.

Это не означает, что у финализаторов нет хороших применений, но детерминированное освобождение ресурсов не является одним из них. Скорее, когда вы работаете с файлом, сетью или подключением к базе данных, вы хотите явным образом освободить базовый ресурс, как только закончите с ним работать.

Создавая блок using в приведенном выше примере, вы точно знаете, что myFile.Dispose() будет вызываться, как только вы закончите работу с файлом, независимо от того, генерирует ли Read() исключение.

Самой очевидной ошибкой, которая может возникнуть при использовании метода 2, будет невозможность проверить возвращаемое значение. Это, вероятно, приведет к возможному исключению NullReferenceException, которое может появиться гораздо позже, что значительно усложнит отслеживание источника проблемы. В отличие от этого, метод 1 немедленно вызвал бы исключение InvalidCastException, что сделало бы источник проблемы более очевидным.

Более того, даже если вы не забудете проверить возвращаемое значение в методе 2, что вы будете делать, если обнаружите, что оно равно нулю? Подходит ли метод, который вы пишете, для сообщения об ошибке? Есть ли что-то еще, что вы можете попробовать, если этот состав не сработает? Если нет, то создание исключения является правильным решением, поэтому вы можете позволить этому произойти как можно ближе к источнику проблемы.

Вот несколько примеров других распространенных пар методов, где один генерирует исключение, а другой нет:

В качестве конкретного примера, если у вас есть альтернативное законное действие (например, действие по умолчанию), которое нужно предпринять, если было бы сгенерировано исключение, подход без исключений может быть законным выбором. В таком случае действительно может быть лучше написать что-то вроде этого:

Однако неверно предполагать, что TryParse обязательно является «лучшим» методом. Иногда это так, иногда нет. Вот почему есть два способа сделать это.Используйте правильный вариант для контекста, в котором вы находитесь, помня, что исключения, безусловно, могут быть вашими друзьями как разработчика.

Но если вы проигнорируете предупреждение такого типа, рано или поздно что-то вроде этого вполне может попасть в ваш код:

А с той скоростью, с которой Intellisense позволяет нам писать код, эта ошибка не так уж невероятна, как кажется.

Теперь у вас есть серьезная ошибка в вашей программе (хотя компилятор только пометил ее как предупреждение по уже объясненным причинам), и в зависимости от того, насколько сложна ваша программа, вы можете потратить много времени на ее отслеживание. вниз. Если бы вы обратили внимание на это предупреждение, вы бы избежали этой проблемы с помощью простого пятисекундного исправления.

Помните, что компилятор C Sharp предоставляет много полезной информации о надежности вашего кода… если вы слушаете. Не игнорируйте предупреждения. Обычно их исправление занимает всего несколько секунд, а исправление новых, когда они происходят, может сэкономить вам часы. Приучите себя ожидать, что в окне «Список ошибок» Visual Studio будет отображаться «0 ошибок, 0 предупреждений», чтобы любые предупреждения вызывали у вас достаточно дискомфорта, чтобы вы могли немедленно их устранить.

Подведение итогов

Дополнительная литература в блоге Toptal Engineering:

Понимание основ

Если Visual Studio отображает сообщение об ошибке Не удается найти пользовательский инструмент SpecFlowSingleFileGenerator в этой системе. щелкнув правой кнопкой мыши файл объекта и выбрав «Запустить пользовательский инструмент», убедитесь, что расширение SpecFlow включено.

Чтобы включить расширение в Visual Studio, выберите Инструменты | Расширения и обновления…, выберите расширение «SpecFlow для Visual Studio», затем нажмите «Включить».

Если ошибка не устранена, выберите Инструменты | Опции | SpecFlow и установите для параметра Включить пользовательский инструмент SpecFlowSingleFileGenerator значение True.

Включить трассировку¶

Вы можете включить трассировку для SpecFlow. После включения трассировки в окно вывода добавляется новая панель SpecFlow, отображающая диагностические сообщения.

Чтобы включить трассировку, выберите Инструменты | Опции | SpecFlow из меню в Visual Studio и установите для параметра «Включить трассировку» значение «True».

Устранение неполадок¶

Шаги не распознаются, даже если есть совпадающие определения шагов¶

Интеграция SpecFlow с Visual Studio кэширует состояние привязки определений шагов. Если кеш поврежден, шаги могут быть нераспознаны, а выделение шагов может быть неправильным (например, связанные шаги отображаются как несвязанные). Чтобы удалить кеш:

Закройте все экземпляры Visual Studio.

Перейдите в папку %TEMP% и удалите все файлы с префиксом specflow-stepmap-, например specflow-stepmap-SpecFlowProject-607539109-73a67da9-ef3b-45fd-9a24-6ee0135b5f5c.cache .

Повторно откройте свое решение.

Вы можете получить более конкретное сообщение об ошибке, если включите отслеживание (см. выше).

Тесты не отображаются в окне обозревателя тестов при использовании SpecFlow+ Runner¶

Примечание. Начиная с Visual Studio 2017 15.7 временные файлы больше не используются. Следующее относится только к более ранним версиям Visual Studio.

Кэш тестового адаптера Visual Studio также может быть поврежден, что приведет к тому, что тесты не будут отображаться. В этом случае попробуйте очистить кеш следующим образом:

Закрыть все экземпляры Visual Studio

Перейдите в папку %TEMP%\VisualStudioTestExplorerExtensions\ и удалите все подпапки, связанные с SpecFlow/SpecRun, т. е. в названии которых есть «SpecFlow» или «SpecRun».

Повторно откройте свое решение и убедитесь, что оно собрано.

Не удалось найти плагин в пути поиска плагинов: SpecRun` при сохранении/генерировании файлов функций¶

SpecFlow ищет подключаемые модули в папке пакетов NuGet. Это обнаружено относительно ссылки на TechTalk.SpecFlow.dll. Если эта DLL не загружена из папки NuGet, подключаемые модули не будут найдены.

Распространенная проблема заключается в том, что папка NuGet еще не готова (например, не восстановлена) при открытии решения, но TechTalk.SpecFlow.dll находится в папке bin\Debug проекта. В этом случае Visual Studio может загрузить сборку из папки bin\Debug вместо ожидания правильного восстановления папки NuGet. После этого Visual Studio запоминает, что она загрузила сборку из bin\Debug , поэтому повторное открытие решения может не решить эту проблему. Лучший способ решить эту проблему заключается в следующем:

Убедитесь, что папки NuGet правильно восстановлены.

Закройте Visual Studio.

Удалите папку bin\Debug из ваших проектов.

Повторно откройте решение в Visual Studio.

Тесты не отображаются в окне обозревателя тестов при использовании SpecFlow+ Runner даже после восстановления пакета NuGet¶

Чтобы исправить это, откройте консоль NuGet или диалоговое окно ссылок NuGet и нажмите кнопку восстановления пакетов. Возможно, вам потребуется перезапустить Visual Studio после восстановления пакетов.

VS2015: тесты не отображаются в окне обозревателя тестов при использовании SpecFlow+ Runner¶

Похоже, что VS2015 иначе обрабатывает пакеты NuGet на уровне решения (те, которые зарегистрированы в файле .nuget\packages.config решения). В результате пакеты NuGet уровня решения должны быть указаны в проектах, в которых они используются, иначе обозреватель тестов не сможет распознать средство выполнения тестов.

id="SpecRun.Runner" version="1.2.0" />
) в файл packages.config ваших проектов SpecFlow. Возможно, вам придется перезапустить Visual Studio, чтобы увидеть ваши тесты.

© Copyright 2021, команда SpecFlow. Редакция c2a0ed1a .

Последние стабильные версии Загрузки pdf html On Read the Docs Project Home Сборки Бесплатный хостинг документов, предоставляемый Read the Docs.

Читайте также: