2010-11-03 80 views
3

我最近转换为Visual Studio 2010,并在VS2008中完美运行的项目上运行转换。在Visual Studio 2010中,事情并不那么晴朗。VS2010与.Net 2.0 WinForms应用程序 - 绑定到通用列表的错误

这是一个.Net 2.0 WinForms项目,它大量地将ListView和Grid绑定到通用列表,因此取出通用列表是不可行的。

我收到以下错误消息(匿名张贴目的):

Could not find a type for a name. The type name was 
'System.Collections.Generic.List`1[[MyAttribute, Domain, Version=1.0.0.5,  
Culture=neutral, PublicKeyToken=71c8708be064889a]], mscorlib, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089'. Line 134, position 5. 
C:\Projects\MyProject\Control.resx 

的问题消失,如果我摇项目达.NET 4.0,但这个项目有.NET 2.0的目标所以这不是一个合适的长期解决方案。

谷歌搜索发现大量的帖子从人/有/这个问题,但没有,我可以看到谁已经解决了问题的人,所以任何帮助将不胜感激。

Ta。

+0

你有没有找到这个解决方案? – Scott 2010-11-15 22:36:12

+0

没有。为了将其开发为.Net 4.0开发,然后向下发布.Net 2.0(可以从命令行构建,而不是从VS2010构建)。不理想! – Wysawyg 2010-11-16 11:59:49

+0

不理想,但谢谢你的想法! – Scott 2010-11-16 16:18:05

回答

0

没有太多的信息去这里..

看起来像一个序列化问题。你是否在序列化控制集合属性?是否需要序列化? 如果不需要,请尝试添加DesignerSerializationVisibility属性。它尝试默认序列化所有属性。

0

我们也在寻找这个......我们的VS2008项目包含一个公开通用列表的属性,在构建时会得到相同的异常。我们在VS2010构建机上使用MSBuild 3.5(它已安装2010,但我们无法将项目升级到2010格式)。

我们的错误来自一个表格: TBDEV830.resx(143):无法找到名称的类型。类型名称是'System.Collections.ObjectModel.ObservableCollection`1 [[T1.Tb.SideBar.ISideBar,T1.Tb.SideBar,Version = 1.0.3702.18460,Culture = neutral,PublicKeyToken = null]],WindowsBase,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。行143,位置5

有没有发现从其他论坛上几个职位,没有人似乎还没有找到一个解决方案:

One article状态添加[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)但这并没有影响。

另一篇文章(http://www.go4answers.com/Example/tfs2008-tfs2010-migration-upgrade-3526.aspx)声明在IDE中加载它,并询问是否有助于隔离问题,但那会意味着将该项目升级到2010格式,这是ew不能做到的。

+0

我对第一个链接持怀疑态度,因为它的日期是2006/2007,而这个“问题”只在转移到VS 2010时出现。我想我对你有一个稍微不同的问题,因为MSBuild的解决方案工作正常,它只是在Visual Studio中建立,抱怨resx文件。 – Wysawyg 2010-11-17 11:31:29

1

删除.resx文件中的部分,然后删除正在加载该资源的designer.cs(resources.GetObject("..."))中的一行。

然后尝试在设计器中打开控件,两者都应该重新生成,您可能会得到空引用异常,具体取决于暴露设计器中设置属性的控件。对我而言,我能够忽视并继续。

设计器出现后,您可以比较resx文件,并看到它所在的任何对象现在都有一些不同的序列化。此外,如果它是您的自定义控件,并且您正在公开一个通用列表属性,请考虑首先将[Browsable(false)]属性放在它上面,以便您无法设置设计器的值,设计师也不会自动将其设置为新值。

我的情况发生了什么是一个空的通用列表被序列化到resx文件,然后升级Visual Studio后,列表不再以相同的方式序列化。

相关问题