1

我在 Visual Studio 2010 中有一个 XML 架构定义 (XSD) 文件。数据集设计器应该在文件中生成一个强类型数据集<name>.designer.vb

根据许多错误因素,它似乎偶尔为可枚举操作提供强类型(用于 LINQ 或每个循环)

例如,有时生成的代码库能够检测到类型,有时则不能:

截图代码示例

有问题的代码似乎是生成的文件是否具有以下功能:

Public Overridable Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
    Return Me.Rows.GetEnumerator
End Function

如果是这样,那么调用该函数的枚举器将返回一个无聊的object.
如果不是,则枚举器将返回适当的类型。

我的问题:

我怎样才能让它始终如一地产生适当的行为?

我们的源代码不包含生成的代码,因此每个开发人员都需要自己生成它。这会导致某些机器因输入不当而出现编译器错误,而另一些机器则不会……使用相同的源代码

一些似乎与它有关的事情:

  • 针对 .NET 4.0 VS .NET 4.0 客户端的程序集版本
  • XSD、设计器或使用文件在生成期间是否打开
  • 其他的?

可能的解决方法:

  • 在所有声明中包含强类型/强制转换
  • 在源代码管理中包含正确生成的文件
4

1 回答 1

0

问题:

简而言之,当MSDataSetGenerator工具运行,但System.Data.DataSetExtensions程序集尚未加载到当前的 Visual Studio 进程中时,就会出现问题。

解决方案:

加载程序集的一种方法是打开任何 XSD 文件,然后重新生成设计器代码。

以下步骤应生成适当的设计器文件:

  1. 打开任何 XSD 文件到设计器视图(这会加载DataSetExtensions.dll
  2. 右键单击 XSD 并选择Run Custom Tool

这是一个完整的逐步演练,带有问题和解决方案的图片

其他实例:

此问题已在以下错误票中报告给 Microsoft:

SO问题中也解决了它:

于 2014-05-14T20:45:30.200 回答