Свойства, зависящие от решения

У меня есть приложение, в котором я хотел бы иметь два выпуска, в одном выпуске будет все включено, в другом выпуске некоторые пункты меню будут отключены. Я попытался создать новую конфигурацию решения, в которой некоторые элементы меню отключены. Мой код следующий:

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

Однако это нарушает программу.

Данная ошибка:

В WindowsBase.dll возникло необработанное исключение типа «System.BadImageFormatException». Дополнительная информация: не удалось загрузить файл или сборку «VirtiumStorAPIWindowsManaged, Version = 0.0.0.0, культура = нейтральный, PublicKeyToken = null» или одну из его зависимостей. Была сделана попытка загрузить программу с некорректным форматом

Я пробую это впервые, поэтому любые предложения будут отличными.

поэтому, если я использую следующий код, он работает в режиме отладки:

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

как мне заставить это работать в индивидуальной конфигурации решения?


person yawnobleix    schedule 18.06.2013    source источник
comment
ломает программа не особо наглядная! Что ломается, как себя проявляет разрыв? Мы не читатели мыслей   -  person freefaller    schedule 18.06.2013
comment
выдается следующая ошибка: необработанное исключение типа 'System.BadImageFormatException' произошло в WindowsBase.dll Дополнительная информация: не удалось загрузить файл или сборку 'IWindowsManaged, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null' или одно из его зависимости. Была сделана попытка загрузить программу с неверным форматом.   -  person yawnobleix    schedule 18.06.2013


Ответы (3)


У вас что-то не так. Лучше напишите:

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

Подробнее читайте здесь

И сайт библиотеки директив препроцессора MSDN.

person Community    schedule 18.06.2013
comment
проблема не связана с синтаксисом директивы прекомпилятора. Я уже столкнулся с подобной проблемой. Пожалуйста, смотрите мой ответ для получения дополнительной информации - person Luis Filipe; 18.06.2013
comment
поэтому я решил попробовать скомпилировать в режиме отладки со следующим кодом, чтобы не было проблемы, о которой упоминал Луис. Мой новый код: #if Debug Download_Menu.IsEnabled = false; ChangeLayout_Menu.IsEnabled = false; #endif, но это все равно не отключает пункты меню - person yawnobleix; 18.06.2013
comment
Насколько я понимаю, теперь ваш код компилируется и сборка правильно загружается во время выполнения, верно? попробуйте синтаксис wonko79 - person Luis Filipe; 18.06.2013

Это связано с тем, что две конфигурации не компилируются для одного и того же типа процессора.

Независимо от того, выбрано ли "Any CPU" или 32bit or 64bit

person Luis Filipe    schedule 18.06.2013

Это происходит потому, что конфигурация вашего проекта не соответствует новой директиве препроцессора, которую вы создаете. Убедитесь, что конфигурация решения и целевая платформа для новой директивы препроцессора соответствуют вашей конфигурации отладки. Один практический пример того, почему вы сталкиваетесь с исключением неправильного формата изображения, заключается в том, что в вашем проекте вы можете ссылаться на сборку, которая построена с 32-битной (x86) конфигурацией, и ваш проект может собираться с 64-битной (x64), поэтому, когда этот проект пытается загрузить указанный тип (т.е. 64-битная сборка пытается загрузить 32-битную сборку), это вызовет исключение формата badimage.

person srsyogesh    schedule 18.06.2013