Подтвердить что ты не робот

Что вызывает исключение InvalidDeploymentException в приложении WPF?

Я разработал приложение WPF, и когда я запускаю его в режиме отладки, я вижу в выводе следующее:

'WpfApplication1.vshost.exe' (управляемый (v2.0.50727)): Загружено 'C:\WINDOWS\сборка\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll', Загружены символы. Первый шанс исключение типа 'System.Deployment.Application.InvalidDeploymentException' произошло в System.Deployment.dll Дополнительная информация: Приложение личность не установлена.

Если я использую элемент управления из этого приложения в другом приложении WPF, на выходе есть 7 таких сообщений. Тем не менее приложение работает нормально.

Не могли бы вы объяснить причину, по которой эти исключения были брошены? Я обнаружил, что метод ApplicationDeployment.get_CurrentDeployment вызывает их. В MSDN написано, что это исключение возникает, когда "вы пытались вызвать это статическое свойство из приложения, отличного от ClickOnce". Я не могу понять, что это значит.

Я нашел аналогичный пост InvalidDeploymentException - идентификатор приложения не установлен, но ответа на этот вопрос нет.

4b9b3361

Ответ 1

Это "исключение из первого шанса", что означает, что отладчик просто уведомляет вас о том, что было выбрано исключение, а не тот, который был необработанным.

.NET Framework бросает и ломает это исключение внутри - отладчик сообщает вам, что он встречается в некотором коде в System.Deployment.dll. Исключение возникает при попытке получить доступ к информации о пользователе/​​сети, но базовый код перехватывает исключение, когда это происходит, и автоматически возобновляет выполнение. Там вы ничего не можете сделать, и это относительно безвредно.

Скорее всего, вы пытаетесь получить путь AppData для текущего пользователя, и в этом случае Framework должен определить, является ли ваше приложение обычным приложением или приложением ClickOnce, чтобы вернуть правильный путь. Если вы используете приложение ClickOnce, правильные данные просто возвращаются. В противном случае создается исключение, которое улавливается платформой, и предполагается, что ваше приложение не является приложением ClickOnce, в результате чего вместо него возвращается стандартный путь пользователя.

Существует ряд исключений, которые запускаются и обрабатываются во время работы приложения. Там нет вреда, если они не будут обработаны. Если это действительно вас беспокоит, вы можете настроить исключения, о которых сообщает вам отладчик. Например:

  • Откройте окно "Исключения" в меню "Отладка".
  • Разверните "Исключения общего времени выполнения языка" → "System.Deployment.Application".
  • Снимите флажок рядом с надписью "System.Deployment.Application.InvalidDeploymentException".