У меня была такая же проблема, и для меня это был способ добавления файлов ресурсов в проект.
Я должен был убедиться, что каждый из моихФайлы ресурсов в стиле xaml были настроены как «Страница» (в свойстве «build action»).По умолчанию они не все были в этом режиме (некоторые как «Содержимое», другие как «Компилировать» или «Встроенный ресурс» или «Ресурс») и , которые вызвали проблему такого рода.
может быть, это то же самое для вас ...
edit: Из того, что я мог бы собрать, это как-то связано с тем, как код xaml встроен в проект и, в частности, Порядок , в котором он анализируется WPF: если исходный файл установлен как «Страница», порядок объединения словаря не учитывается, поэтому это будет работать в режиме выпуска:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- let's say this dictionary contains a call to "MyButtonStyle" ... -->
<ResourceDictionary Source="resources/Common.xaml" />
<!-- ... and this one contains the definition of "MyButtonStyle" -->
<ResourceDictionary Source="resources/GeneralResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
но это не сработает с другими опциями (во всяком случае, не со всеми, я не пробовал каждый из них), так как вызов будет проанализирован перед определением.
Что касаетсяпочему он работает в режиме отладки, а не в выпуске (или в вашем случае, когда вы запускаете без отладки), я догадался, что это происходит потому, что WPF анализирует и сохраняет ресурсы в памяти по-разному в зависимости от режима, в котором вы находитесь (отладка или нет).Я думаю, что WPF хранит все в памяти в режиме отладки, в то время как он хранит только то, что ему нужно в режиме выпуска (например, вызывающий код, а не код определения), но опять же, это только мое предположение ...
edit 2: для меня это был кошмар для отладки, потому что это было еще хуже: это работало в некоторых конфигурациях релиза, а не в других, потому что в зависимости от порядка действий, предпринятых пользователем, он получал ошибку или нет (ресурсвозможно, уже был заряжен в памяти или нет при вызове, в зависимости от того, какой WPf уже нужен в данный момент), и, конечно, я не мог «отладить», скажем так, потому что режим отладки всегда работал ... Мне потребовалось некоторое время, прежде чемвыяснить это решение ... рад, что это помогло