2

我尝试了几种方法来找到解决这个问题的方法,但结果一无所获。于是发帖。我正在使用 Visual Studio 2010 并使用 VB 构建应用程序,当我运行(调试)时出现以下错误。

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

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

4

1 回答 1

5

在这种CLSCompliant情况下不起作用。问题是字段名称Invoice address包含一个空格,因此标识符不符合 CLS(为什么这个带有下划线的名称不符合 CLS?)。

问题中没有说明上下文,但此错误经常出现在 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 
于 2013-10-07T07:16:15.090 回答