Строка интерполяции $ считается недопустимым символом и возвращает ошибку BC30037 (vb.net)

Я настраиваю сервер кеша Redis в vb.net, поэтому я начал реализовывать класс Redis в своем исходном коде, чтобы позже использовать методы класса.

В настоящее время у меня есть эта ошибка: «BC30037: неверный символ», и я не могу ее решить. Ошибка возникает из-за символа "$" перед моей строкой, что позволяет нормально выполнять интерполяцию строк. Здесь это не работает и наоборот, этот символ считается недействительным (компилятор не понимает, что это интерполяционная строка и поэтому возвращает ошибку, т.к.).

Я нашел человека, который решил ту же проблему в другой теме, но он использовал Team Foundation Server и работал над проектом Visual Studio: Сервер сборки tfs - интерполяция строк $ Недопустимый символ

Я работаю с Visual Studio 2019 и ASP.NET 4.7.2, но у меня нет проекта (мой код такой же, как в Visual Studio, но не в проекте).

Я хотел бы знать, как решить эту проблему с моей текущей конфигурацией?

Public Function GetCommand() As String Implements IRedisCommand.GetCommand
    Return $"APPEND {Key} {Value}" //$ is the problem here
End Function

Вы используете Option Strict On? Если нет, может быть какая-то другая проблема, из-за которой может показаться, что проблема с $.

Andrew Morton 27.05.2019 18:22

Символ комментария в vb.net — это одинарная кавычка, а не // (это С#).

Mary 27.05.2019 18:34
Return "${Key} ${Value}" Также однострочные комментарии создаются с помощью ', а не //. Многострочные комментарии не существуют в VB.
IOviSpot 27.05.2019 18:51

«Мой код такой же, как в Visual Studio, но его нет в проекте». Как попасть в редактор без проекта?

Mary 27.05.2019 18:55

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

antoine zombralis 27.05.2019 19:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
1 567
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Я, наконец, нашел альтернативу проблеме: я использовал метод String.Format() для преобразования значения объектов в строки в соответствии с заданными форматами и вставки их в другую строку.

Сейчас это выглядит так:

Public Function GetCommand() As String Implements IRedisCommand.GetCommand
    Return String.Format("APPEND {0} {1}", Key, Value)
End Function

Кстати, спасибо за ваши разъяснения относительно комментариев vb.

Хорошего дня !!

Для всех, кто хочет использовать новейшие функции vb.net, такие как интерполяция строк, вот шаги, которые я должен был предпринять для устранения ошибки BC30037:

Должен отметить, что ошибка у меня появлялась только при локальном запуске кода. При публикации на сервере 2012 года с iis 7.5+ все работало нормально.

  1. Во-первых, убедитесь, что ваше приложение использует .Net Framework 4.5.1 или выше.

  2. Далее открываем менеджер пакетов и запускаем

    PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
    

    Это настроит ваш web.config для использования последнего компилятора. Я думаю, именно поэтому он не работает локально, но работает на сервере.

  3. Наконец, запустите

    PM> update-package -reinstall
    

    Это гарантирует, что все ранее установленные библиотеки будут обновлены до версии 4.5.1+.

Перекомпилируйте и запустите локальную отладку для проверки! Надеюсь, это поможет кому-то.

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