(真不敢相信这个问题还没有被问过,但我找不到重复的问题)
在拥有大量项目的 Visual Studio 中,当我第一次打开解决方案时,有时会出现警告 无法将类型为“X”的对象转换为类型为“X”的对象
。通常重新生成似乎可以让其消失,但是有人知道是什么引起的,并且如何避免它吗?
更新 我在某个地方读到删除所有 resx 文件并重新生成可以帮助解决问题。我不经思考地尝试了这个方法。不是个好主意...
(真不敢相信这个问题还没有被问过,但我找不到重复的问题)
在拥有大量项目的 Visual Studio 中,当我第一次打开解决方案时,有时会出现警告 无法将类型为“X”的对象转换为类型为“X”的对象
。通常重新生成似乎可以让其消失,但是有人知道是什么引起的,并且如何避免它吗?
更新 我在某个地方读到删除所有 resx 文件并重新生成可以帮助解决问题。我不经思考地尝试了这个方法。不是个好主意...
SomeType foo = someObj.Foo;
在左边,来自"A"的.Foo
将有SomeType
(左边)和来自"B"的SomeType
。请尝试确保所有项目都使用您依赖的所有程序集的相同版本。
另一种情况是不同名称空间中相同的名称,但那有点显而易见,我怀疑错误消息会使其变得明显?
还有一些其他场景,在同一命名空间中具有相同名称的类型(但属于不同的程序集)会发生冲突; 在这种情况下,“extern aliases”可以帮助解决问题,但是处理起来相当麻烦。
public ObjectX
{
get { return _objx; }
set
{
_objx=value;
//do some other stuff
}
}
您可以按照以下方式进行操作:
public ObjectX
{
get { return _objx; }
}
public void SetObjectX(ObjectX inVal)
{
_objx = inVal;
//do some other stuff
}
... 这将防止可视化设计器在设计时尝试为您的控件分配ObjectX的序列化版本,这实际上是正在发生的事情 ...
我发现以下内容很有用,如此描述:类型为'Data.TimeLineChartedDay[]'的对象无法转换为类型为'Data.TimeLineChartedDay[]'的对象?
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
在尝试了上述所有方法,清理、重建、删除/重新添加引用和编辑设计文件后 - 最终只需关闭Visual Studio并重新打开项目即可解决问题。
简而言之:
尝试关闭再重新打开。
所指示的类型可能具有相同的名称、相同的命名空间和相同的程序集(DLL),但位于不同的版本或位置。
您可以尝试对您所引用的这两个对象使用以下代码来定义它们程序集的位置。
SampleObject.GetType().Assembly.CodeBase
我遇到了和你一样的错误,但对我来说,删除resx文件起了作用。
resx文件
中我的属性的data标记的value标记的内容。MyProp
,位于MyUserControl
用户控件中,在resx文件
中会找到一个名称为MyUserControl.MyProp
的数据标记,请删除其value标记的内容。