我最近将我的机器升级到XP 64位并对我们的软件进行了一些代码更改,当我正在new XmlSerializer(valueType)
时,其中valueType
是一种使用DirectoryItem
的类型,我收到以下错误:
无法生成临时类(result = 1)。 错误CS0012:类型“XYZ.Blob.DirectoryItem”在未引用的程序集中定义。您必须添加对程序集'XYZ.Services.Blob,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'的引用。
我真的不明白为什么它会显示这个错误。 dll位于src文件夹中,并且在同一台计算机上运行完全相同的应用程序(先前版本)。
如果您有任何想法,我怎么能找到它给出的错误,那将是很好的。
答案 0 :(得分:3)
您能否确认自己不是falling in this unfortunate scenario?如果是这种情况,那么微软将无法解决这个问题:
你需要在装配A中使用某种类型:
public interface IInterface {}
要在另一个程序集中序列化的类型:
public class MyClass
{
public int Number;
public void Method<T>() where T : IInterface { }
}
现在,尝试初始化XmlSerializer
XmlSerializer ser = new XmlSerializer(typeof(MyClass));
答案 1 :(得分:1)
您的程序集是为x86平台构建的。
查看项目的属性 - &gt;构建 - &gt;目标平台 默认为x86。您需要重新编译x64。
最佳选择是为“任何”编译 - 在您的情况下。
答案 2 :(得分:0)
一旦我将所有隐式转换更改为显式转换,似乎解决方案已得到修复。
感谢您的帮助。