组件的不同位置停止了类型转换

我正在为我的主项目在C#中编写一个自定义Control类。

有2个项目,一个用于我的Control,一个用于我的主项目。 这两个项目在同一个解决方案中。 我从我的主项目添加一个引用到我的Control项目。 我注意到,第一次将Control从工具面板拖到我的主winform上后,在C:\ Users \ XXX \ AppData \ Local \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies中生成了一个程序集文件夹,以及文件夹名称就像“ jlebh-py01 ”。

第一个构建总是正常,但在重建我的Control类或整个解决方案后,将在C:\ Users \ XXX \ AppData \ Local \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies生成一个新的程序集文件夹,然后出现问题,我的控件无法表现良好,因为Visual Studio说这两种类型“来自不同的位置”。 错误消息如下:

[A] MyControl.TypeXXX无法强制转换为[B] MyControl.TypeXXX。 从assemblyXXX在位置’C:\ Users \ XXX \ AppData \ Local \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \ jlebh-py01 \ MyControl.dll’中键入A orginates来自assemblyXXX的位置’C:\ Users \ XXX \应用程序数据\本地\微软\ VisualStudio的\ 9.0 \ ProjectAssemblies \ ue4i-z3j01 \ MyControl.dll”

如果我直接引用Control DLL而不是通过项目引用,或者在主项目中使用我的Control之后从不重建Control项目,那么事情似乎没问题。

有谁知道为什么? 这是在同一解决方案中开发控件和主项目的正确方法吗?

根据您的解释 – 您的解决方案中的主项目似乎没有更新您对控件库的引用。 我至少在ASP.NET工作了几年,并且在引用的程序集中遇到了类似的问题,但总是有一个非常简单的修复 – 重建主项目。 这应该清理它,然后运行一个新的构建。

您可以尝试的另一件事是向控件添加变量汇编版本。 在项目属性,程序集信息中,尝试将版本号设置为1.0。*这将强制最后两个版本号基于一天和一天中的时间,并且每次重建控件时 – 它将具有不同的版。 只要主项目保持版本更新 – 它应该 – 应该没有任何问题..