2013-06-18 206 views
0

我有一个应用程序,我想要两个版本,一个版本将启用一切,在另一个版本中,某些菜单项将被禁用。我试图创建一个新的解决方案配置,其中某些菜单项被禁用。我的代码如下:与解决方案有关的属性

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

然而,这打破了程序。

鉴于错误:

类型“System.BadImageFormatException”的未处理的异常发生在WindowsBase.dll其他信息:无法加载文件或程序集“VirtiumStorAPIWindowsManaged,版本= 0.0.0.0,文化=中性公钥= null“或它的一个依赖关系。试图加载程序的格式不正确

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

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

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

我怎么才能在自定义解决方案的配置这方面的工作?

+0

“打破程序”并不是特别具有描述性!什么时候休息,休息是如何展现的?我们不介意阅读器 – freefaller

+0

给出以下错误: 型“System.BadImageFormatException”未处理的异常发生在WindowsBase.dll 其他信息:无法加载文件或程序集“IWindowsManaged,版本= 0.0.0.0 ,Culture = neutral,PublicKeyToken = null'或它的一个依赖关系。试图加载格式不正确的程序。 – yawnobleix

回答

1

你有什么问题。 最好写:

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

更多here

而且MSDN Preprocessor Directives图书馆网站。

+0

该问题与预编译器指令语法无关。我已经经历了相关的问题。请参阅我的回答以获得更多信息 –

+0

,所以我决定尝试使用以下代码在调试模式下进行编译,这样就不会出现Luis提到的问题。我的新代码是: #if调试 Download_Menu.IsEnabled = false; ChangeLayout_Menu。IsEnabled = false; #endif 但这仍然不会禁用菜单项 – yawnobleix

+0

如果我明白了,您的代码现在编译并且程序集在运行时正确加载,对不对?尝试wonko79语法 –

1

这是因为两个配置都是没有编译相同CPU型号

无论是选择“任何CPU”或32位OU 64

0

这是因为你的项目配置是不对的,你创建新的preprocesor指令。确保新预处理程序指令的解决方案配置和平台目标与您的调试配置相匹配。 为什么你面对不好的图像格式异常的一个实际例子是,在你的项目中,你可能指的是一个使用32位(x86)配置构建的程序集,并且你的项目可能使用64位(x64)构建,所以当这个项目试图加载引用类型(即64位程序集试图加载32位程序集),它会导致badimage格式异常。

相关问题