gpt4 book ai didi

c# - 一台机器上出现通用 GDI+ 错误,但另一台机器上没有

转载 作者:行者123 更新时间:2023-12-02 07:50:45 24 4
gpt4 key购买 nike

尝试使用 ImageFormat 参数将位图保存到 MemoryStream 时,出现一般 GDI+ 错误。

奇怪的是,这种情况只发生在我的一台计算机上,而不发生在其他计算机上。我注意到的唯一区别是获得异常的计算机还需要 App.config 文件中的以下内容:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

如果没有这个,它就无法启动应用程序(这只是一个托管 Windows 服务)。据我所知,两台计算机具有相同的 .NET 版本,尽管我可能没有正确检查。可能是什么原因造成的?

编辑:我没有包含代码,因为我几乎可以肯定这是由其他原因引起的。不管怎样,下面是抛出异常的片段:

MemoryStream stream = new MemoryStream();
Image image = Image.FromStream(new MemoryStream(File.ReadAllBytes(fullpath))); //JPG
image.Save(stream, image.RawFormat); //works fine
//image.Save(stream, ImageFormat.Png); //throws generic GDI+ error

我还应该提到,获得异常的机器正在运行 32 位 Vista,而其他机器则运行 64 位 Windows 7。每台机器在运行应用程序之前都会自行编译应用程序。

最重要的是,所有计算机的 App.config 文件中都有 useLegacyV2RuntimeActivationPolicy="true",尽管只有出现 GDI+ 错误的计算机才是绝对需要它的计算机。

此外,以下是我在两台计算机上安装的 .NET 版本:

可以使用 64 位 Windows 7 运行:1.0.3705、1.1.4322、2.0.50727、3.0、3.5、4.0.30319、Framework64:2.0.50727、3.0、 3.5、4.0.30319

使用 32 位 Vista 时出现错误:1.0.3705、1.1.4322、2.0.50727、3.0、3.5、4.0.30319

最佳答案

你没有给我们太多的帮助,但我将使用我的心灵调试能力。

我猜测没有出现异常的计算机(我们称之为计算机 A)安装了 .NET 2.0、3.0 和/或 3.5(也可能安装了 .NET 4.0;但这并没有)这里并不重要)。我还猜测获得异常的程序集是为 .NET 3.5(或 3.0 或 2.0)编译的。

我还猜测确实出现异常的计算机(我们称之为计算机 B)没有安装 .NET 3.5,但安装了 .NET 4.0。 (这是我知道需要您发布的 app.config 条目的唯一原因。)

让我进一步猜测两台机器都运行相同的操作系统,并且操作系统的位数相同(都是 32 位操作系统,或都是 64 位操作系统)。我在这里冒险,但我希望如果它们不同,您在提出问题时会包含此类关键细节。

如果所有这些猜测都是正确的,那么显而易见的结论是 .NET 在 2.0 .NET 运行时之间改变了其行为(这是计算机 A 上使用的运行时,因为 .NET 2.0、3.0 和 3.5 都在计算机 A 上运行) 2.0 运行时)和 4.0 .NET 运行时(这是计算机 B 上使用的运行时,因为您在 app.config 中特别请求了它)。当您尝试执行正在执行的操作时,.NET 4.0 会引发异常,而 .NET 3.5 不会。

显而易见的下一个问题是“为什么它会抛出异常?”,但您没有给我们任何接近足够的信息来尝试猜测这一点。

关于c# - 一台机器上出现通用 GDI+ 错误,但另一台机器上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com