无法生成临时类

发布于 2024-09-24 20:26:00 字数 465 浏览 5 评论 0 原文

我最近将我的计算机升级到 XP 64 位,并对我们的软件进行了一些代码更改,当我执行 new XmlSerializer(valueType) 时,其中 valueType 是一种类型正在使用 DirectoryItem,我收到以下错误:

无法生成临时类(结果=1)。 错误 CS0012:类型“XYZ.Blob.DirectoryItem”是在未引用的程序集中定义的。您必须添加对程序集“XYZ.Services.Blob,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的引用。

我真的不明白为什么它显示这个错误。该 dll 位于 src 文件夹中,并且完全相同的应用程序在同一台计算机(以前的版本)上运行,没有任何问题。

如果您知道如何找到它给出的错误,那就太好了。

I recently upgrade my machine to XP 64 bit and also made some code changes to our software and when I'm doing new XmlSerializer(valueType), where valueType is a type that is using DirectoryItem, I'm getting the following error:

Unable to generate a temporary class (result=1).
error CS0012: The type 'XYZ.Blob.DirectoryItem' is defined in an assembly that is not referenced. You must add a reference to assembly 'XYZ.Services.Blob, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

I really can't see why it shows this error. The dll is in the src folder and the exact same application is running with no issue on the same machine (the previous version).

If you have any idea how can I find what it gives this error that would be great.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

み零 2024-10-01 20:26:00

您能否验证您不是 陷入这种不幸的情况?如果是这种情况,则这是 Microsoft 无法修复的错误:

您需要将某种类型放入程序集中 A:

public interface IInterface {}

并且需要在另一个程序集中序列化类型:

public class MyClass
{
    public int Number;
    public void Method<T>() where T : IInterface { }
}

现在,尝试初始化 XmlSerializer

XmlSerializer ser = new XmlSerializer(typeof(MyClass));

Can you verify that you are not falling in this unfortunate scenario? If this is the case that's a bug that won't be fixed by Microsoft:

You need some type into an assembly A:

public interface IInterface {}

And a type to be serialized in another assembly:

public class MyClass
{
    public int Number;
    public void Method<T>() where T : IInterface { }
}

Now, try to initialize a XmlSerializer

XmlSerializer ser = new XmlSerializer(typeof(MyClass));
流绪微梦 2024-10-01 20:26:00

您的程序集是为 x86 平台构建的。

查看您的项目的属性 ->构建->目标平台
默认是 x86。您需要重新编译 x64。

最好的选择是针对“任何”进行编译 - 根据您的情况。

Your assembly has been built for x86 platform.

Have a look at your project's properties -> build -> target platform
It is x86 by default. You need to recompile for x64.

Best option is compiling for "any" - in your case.

孤君无依 2024-10-01 20:26:00

一旦我将所有隐式转换更改为显式转换,解决方案似乎就已修复。

感谢您的帮助。

it seems like that the solution was fixed once i changed all my implicit conversion to explicit ones.

thanks for the help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文