【问题标题】:Loading embedded resource on Windows 7在 Windows 7 上加载嵌入式资源
【发布时间】:2010-06-13 19:12:40
【问题描述】:

我有一个在我的 WinXP 机器上运行良好的应用程序。但是,当我尝试在我的 Win7 机器上运行它时,它会在尝试加载嵌入式资源时失败。资源都在那里(我可以使用 Reflector 看到它们)。

失败的行都是这样的:

Splash.Image = new Bitmap(typeof(ContainerForm).Assembly.GetManifestResourceStream("SplashTest.Resources.Logo.gif"));

他们都失败了,但有一个例外:

Exception='System.ArgumentException: Parameter is not valid.
  at System.Drawing.Bitmap..ctor(Stream stream)

我不明白为什么这在我的 Win7 机器上不起作用,但在我通常的 WinXP 开发机器上却起作用。

有什么想法吗?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    这里没有很多可能的故障模式。如果找不到资源,Assembly.GetManifestResourceStream() 将返回 null。这将使 Bitmap 构造函数失败并出现指示的异常。那里有点错误,它应该抛出 ArgumentNullException。

    无论如何,由于某种原因,该程序集似乎没有在您的 XP 机器上使用位图资源构建。使用 Ildasm.exe 仔细检查。双击 Manifest,您应该会看到带有您要求的名称的 .mresource。

    更好的鼠标陷阱是使用项目+属性,资源选项卡添加资源,单击添加资源按钮上的箭头,添加现有文件并导航到文件。然后您可以直接通过自动生成的属性引用位图:

     Splash.Image = Properties.Resources.Logo;
    

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2012-09-14
      • 2011-10-30
      • 2012-02-05
      相关资源
      最近更新 更多