【问题标题】:Solution dependent properties解决方案相关属性
【发布时间】:2013-06-18 16:37:07
【问题描述】:

我有一个应用程序,我希望有两个版本,一个版本将启用所有功能,另一个版本将禁用某些菜单项。我尝试创建一个新的解决方案配置,其中某些菜单项被禁用。我的代码如下:

#if (SMART == true)
        Download_Menu.IsEnabled = false;
        ChangeLayout_Menu.IsEnabled = false;
#endif

但这会破坏程序。

给定错误:

WindowsBase.dll 中出现“System.BadImageFormatException”类型的未处理异常附加信息:无法加载文件或程序集“VirtiumStorAPIWindowsManaged,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序

这是我第一次尝试这个,所以任何建议都会很棒。

所以如果我使用以下代码,它可以在调试模式下工作:

#if DEBUG
        Download_Menu.IsEnabled = false;
        ChangeLayout_Menu.IsEnabled = false;
#endif

如何在自定义解决方案配置中实现这一点?

【问题讨论】:

  • “破坏程序”不是特别描述!什么休息,休息如何表现出来?我们不是读心者
  • 给出了以下错误:WindowsBase.dll 中出现“System.BadImageFormatException”类型的未处理异常附加信息:无法加载文件或程序集“IWindowsManaged,版本=0.0.0.0,文化=中性” , PublicKeyToken=null' 或其依赖项之一。试图加载格式不正确的程序。

标签: c# visual-studio solution


【解决方案1】:

你有问题。 写得更好:

#ifdef SMART
        Download_Menu.IsEnabled = false;
        ChangeLayout_Menu.IsEnabled = false;
#endif

阅读更多here

还有MSDN Preprocessor Directives 图书馆网站。

【讨论】:

  • 问题与预编译器指令语法无关。我已经遇到了相关的问题。请参阅我的回答以获取更多信息
  • 所以我决定尝试使用以下代码在调试模式下编译,这样就不会有 Luis 提到的问题。我的新代码是:#if Debug Download_Menu.IsEnabled = false; ChangeLayout_Menu.IsEnabled = false; #endif 但这仍然不会禁用菜单项
  • 如果我理解,您的代码现在可以编译并且程序集在运行时正确加载,对吗?试试 wonko79 语法
【解决方案2】:

那是因为这两个配置没有编译相同的CPU类型

是选择“Any CPU”还是32bit还是64bit

【讨论】:

    【解决方案3】:

    发生这种情况是因为您的项目配置对于您创建的新预处理器指令是错误的。确保新预处理器指令的解决方案配置和平台目标与您的调试配置相匹配。 为什么您面临错误图像格式异常的一个实际示例是,在您的项目中,您可能指的是使用 32 位 (x86) 配置构建的程序集,而您的项目可能是使用 64 位 (x64) 构建的,所以当这个项目尝试加载引用的类型(即 64 位程序集尝试加载 32 位程序集)会导致 badimage 格式异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 2019-09-08
      • 2011-01-18
      • 2018-06-14
      • 2017-03-11
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多