插值字符串 $ 被视为无效字符并且 returns 错误 BC30037 (vb.net)

An interpolation string $ is considered as an invalid character and returns an error BC30037 (vb.net)

我在 vb.net 中设置了一个 Redis 缓存服务器,所以我开始在我的源代码中实现 Redis class 以便稍后可以使用 class 方法。

我目前遇到此错误:"BC30037: invalid caracter",我无法解决。错误来自我的字符串前面的字符“$”,允许正常进行字​​符串插值。在这里它不起作用,相反,这个字符被认为是无效的(编译器不理解它是一个插值字符串,因此 returns 一个错误,因为)。

我发现有人在另一个主题中解决了同样的问题,但他使用的是 Team Foundation Server 并且正在从事 Visual Studio 项目:

我正在使用 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

我终于找到了解决问题的方法:我使用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 运行ning 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+

  4. 进行了更新

重新编译并运行您的本地调试以验证! 希望对某人有所帮助。