Я настраиваю сервер кеша 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
Символ комментария в vb.net — это одинарная кавычка, а не // (это С#).
Return "${Key} ${Value}"
Также однострочные комментарии создаются с помощью '
, а не //
. Многострочные комментарии не существуют в VB.
«Мой код такой же, как в Visual Studio, но его нет в проекте». Как попасть в редактор без проекта?
Я просто работаю над папкой, содержащей мой исходный код, и эта же папка размещена на локальном сервере IIS, что позволяет мне видеть, как выглядит сайт. Но поскольку я реализовал Redis в своем коде, я больше не могу получить доступ к своему сайту из-за этой ошибки.
Я, наконец, нашел альтернативу проблеме: я использовал метод 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+ все работало нормально.
Во-первых, убедитесь, что ваше приложение использует .Net Framework 4.5.1
или выше.
Далее открываем менеджер пакетов и запускаем
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Это настроит ваш web.config для использования последнего компилятора. Я думаю, именно поэтому он не работает локально, но работает на сервере.
Наконец, запустите
PM> update-package -reinstall
Это гарантирует, что все ранее установленные библиотеки будут обновлены до версии 4.5.1+.
Перекомпилируйте и запустите локальную отладку для проверки! Надеюсь, это поможет кому-то.
Вы используете Option Strict On? Если нет, может быть какая-то другая проблема, из-за которой может показаться, что проблема с
$
.