2013-07-30 73 views
0

我在运行ASP.NET应用程序时遇到以下错误。 X是reference.cs中定义的typedDataTableRow(另一个项目中的Web服务的代理,不属于解决方案的一部分)。 ASPTemp文件夹中只有一个Y.dll文件。我重新启动Visual Studio,清理解决方案,删除ASPTemp文件夹,删除解决方案下的所有已编译的dll,重新启动IIS。在调试器中,模块窗口中有一个Y.dll实例。我无法确定为什么我得到这个异常。这两条路的例外情况完全相同!运行时以某种方式认为有两个Y.dll实例。 (Y是我的项目/程序集的名称)。我正在尝试使用Fuslogvw.exe,但它没有显示最低限度的信息,也没有任何用处。会发布关于它的另一个问题。我在Windows 7 64bit中使用Visual Studio 2010。System.InvalidCastException [A] X不能转换为[B] X

我提到的一点是我有两个非常相似的类型数据集。一个是从另一个加上新的数据表创建的。我使用合并方法将数据从一个复制到另一个。我在第二个..designer.cs文件中对数据集类名进行了全局重命名,我确信这两个数据集是唯一的。第一个类名不存在int第二个。我提到这一点,以防两个数据集可能是这个原因,但我不知道如何。

任何想法如何解决这个问题?

Exception Type: System.InvalidCastException 
Message: [A]X cannot be cast to [B]X. Type A originates from 'Y, Version=123.10.0.32434, 
Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 
'c:\temp\ASPTemp\xx\bf09df88\62e1519a\assembly\dl3\bdf55bf9\f02959af_c88cce01\Y.dll'. 
Type B originates from 'Y, Version=123.10.0.32434, Culture=neutral, PublicKeyToken=null' 
in the context 'Default' at location 'c:\temp\ASPTemp\xx\bf09df88\62e1519a\assembly\dl3\bdf55bf9\f02959af_c88cce01\Y.dll' 
+0

请告诉我Y.dll不是**真的**你的DLL?而且你没有名为A和B的类型? – Kevin

+0

不,这些不是真名。为什么?这应该不重要。 –

回答

0

我删除了第二个数据集,并引用作为一个测试的所有代码和问题走了。当两个数据集包含在两个不同的类中并且没有编译错误时,我仍然没有解释这种行为。

+0

我删除了designer.cs文件。使用CodePlex中的xcd2code创建另一个。不知道它是否创建了具有不同结构的类。 –

0

这实在太模糊,无法用给出的信息来解决。这听起来像你复制/粘贴的东西,并没有设法正确地重命名一切。

修改生成的代码时必须非常小心。当在UI或设计器中进行更改时,他们经常更新的不仅仅是designer.cs文件。此外,还可能有需要更新以反映更改的配置文件。

+0

数据集不会修改任何配置文件 –

+0

@Tony我不是故意暗示他们这样做。我只是提供了一个例子,说明全局替换如何引入不一致的状态。 – Dan

相关问题