0

Visual Studio 刚刚开始向我扔“ error BC30037: Character is not valid.”(在验证网站时),无论我在我的 VB.NET 3.5 项目中的任何地方使用可空运算符的任何地方。这发生在几个月前的一位同事身上,但他不记得他是如何解决的。

例如,如果我更改Double?to的每个实例Nullable(Of Double),它编译得很好,并且在同一解决方案中的其他项目中的其他可空值用法继续正常工作。

我尝试清理解决方案,关闭 Visual Studio,删除临时 ASP.NET 文件,然后重新启动 Visual Studio 无济于事。

还有什么我可以尝试的吗?

添加:

我想我会提到委托语法也失败了。我有这段代码:

Dim hasSkips As Boolean = payments.Where(Function(p) p.Code = "SKIP").Count > 0
Dim isRegular As Boolean = Not hasSkips

payments是一个IList(Of Payment)。该Payment对象有一个名为 的字符串属性Code。Visual Studio 中没有任何验证错误或任何可见的东西,使它认为它不知道那行代码的作用。Intellisense 工作得很好,但编译器符合语法。上面两行代码分别伴随以下两个错误:

error BC30201: Expression expected.
error BC30451: Name 'hasSkips' is not declared.

似乎 Visual Studio 不知道它应该知道的 VB.NET 3.5 特性。

4

3 回答 3

2

我想到了。需要指示网站项目使用哪个版本的编译器,即使您在属性页中选择了版本。将此添加到我的 web.config 修复了问题:

<system.codedom>
    <compilers>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <providerOption name="CompilerVersion" value="v3.5"/>
            <providerOption name="OptionInfer" value="true"/>
            <providerOption name="WarnAsError" value="false"/>
        </compiler>
    </compilers>
</system.codedom>

好吧,很高兴知道我猜。

于 2009-08-11T21:26:53.457 回答
1

我也有这个问题 - 但它是由项目文件中的损坏引起的 - 一些.aspx页面设置为编译的方式......

并且将 Aspx 页面编译为 VB 意味着开头的 '<%@' 字符无效......

不得不卸载项目 - 找到有问题的条目并将其删除。

于 2011-12-14T23:27:35.360 回答
-1

我赞同安德鲁的回答。双倍的?是 C# 语法,它在 VB 中不存在。VB 使用 Nullable(Of Double)。

于 2009-08-05T19:22:34.723 回答