vb.net - VS 2010 名称不符合 CLS 错误

标签 vb.net visual-studio-2010

我尝试了多种方法来解决这个问题,但都没有结果。因此就有了这个帖子。我正在使用 Visual Studio 2010 并使用 VB 构建应用程序,当我运行(调试)时,出现以下错误。

数据集“DataSet1”中的字段名称为“发票地址”。字段名称必须是符合 CLS 的标识符。

其中有很多都指向数据集,坦率地说,我不确定如何解决它。我用过:<Assembly: CLSCompliant(False)>在 AssemblyInfo.vb 中,但仍然出现错误。我在某处读到这一行要放入文件 AssemblyInfo.cs 中。我没有其中之一。任何对此的帮助将不胜感激。谢谢

最佳答案

CLSCompliant 在这种情况下不起作用。问题在于字段名称 Invoice address 包含空格,因此标识符不符合 CLS ( Why is this name with an underscore not CLS Compliant? )。

问题中没有说明上下文,但RDK报告中经常出现此错误。

报表设计器通过重命名字段解决了问题

<Field name="non_CLS_Compliant_Name">
 <DataField>non CLS Compliant Name</DataField>
 </Field> 

在代码中,您应该用下划线(_)替换名称中所有不合规的字符,并在开头添加 ID 以解决第一个字符的问题

Dim RgxGlobal As New System.Text.RegularExpressions.Regex("[^\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]")
Dim RgxStart As New System.Text.RegularExpressions.Regex("\A[^\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]")
Dim NewFieldName As String = RgxGlobal.Replace(ColName, "_")
If RgxStart.IsMatch(NewFieldName) Then NewFieldName = "ID" & NewFieldName 

关于vb.net - VS 2010 名称不符合 CLS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208960/

相关文章:

vb.net - 捕获一般异常时,如何判断原始异常类型?

vb.net - 创建所有目录的列表

c# - 如何在 Web 测试插件中调用 MoveDataTableCursor 来浏览表中有限的行集?

visual-studio-2010 - 如何防止 “There appears to be a discrepancy between the solution'的源代码控制……”而无需更改.sln文件

visual-studio-2010 - GitExtension 未显示在 Visual Studio 2010 Express (Windows 7) 上

visual-studio-2010 - Visual Studio 2010 发布配置文件——它们存储在哪里?

asp.net-mvc - 无法在 Visual Studio 2015 Nuget 包管理器中安装包 'Microsoft.AspNet.Razor 3.2.3'

c# - 如何查看文件系统目录以查看文件何时添加到其中?

c# - 将 MYSQL 数据库中的数据显示到控件,尤其是在 DropDown 的 Combobox 上

vb.net - 使用字符串作为变量的名称