Приложение C # .NET аварийно завершает работу сразу после запуска - PullRequest
0 голосов
/ 10 мая 2010

Я экспериментировал с номером версии сборки и файла. Хотя моя программа работает хорошо из IDE, но после создания установочного файла и установки приложения происходит сбой с InvalidDeploymentException.

Что я должен сделать, чтобы решить проблему?

Ответы [ 2 ]

1 голос
/ 10 мая 2010

Атрибуты [AssemblyVersion] и [AssemblyFileVersion] играют разные роли. [AssemblyVersion] видна только управляемому коду и важна для GAC. Всякий раз, когда в публичном интерфейсе сборки вносятся серьезные изменения, вам следует увеличить это число.

Компилятор внедряет неуправляемый ресурс в сборку с параметром командной строки / win32res. Сюда входит ресурс VERSIONINFO , доступный для чтения всем неуправляемым кодом, включая оболочку. Он определяет, что вы видите, когда вы щелкаете правой кнопкой мыши по сборке в Проводнике и просматриваете страницу свойств Details. Показанное здесь значение «Версия файла» задается атрибутом [AssemblyFileVersion]. Значение [AssemblyVersion] там не видно, Explorer (пока) не знает, как это прочитать.

Вам решать, как использовать этот атрибут. Авария указывает на то, что в коде развертывания выполняется некоторая минимальная проверка работоспособности, я никогда не пытался ошибиться, чтобы увидеть, что произойдет. Однако делать их одинаково имело бы большой смысл.

Microsoft использует [AssemblyFileVersion] по-другому, они автоматически увеличивают его для каждой сборки и прибавляют [AssemblyVersion] вниз. Это хорошая идея и стратегия, которую я использую. Однако довольно иронично то, что функция автоматического увеличения версии работает точно в обратном направлении, она может выполнять только автоматическое увеличение [AssemblyVersion]. Вздох.

0 голосов
/ 10 мая 2010

Попробуйте использовать средство просмотра журнала Fusion , чтобы увидеть, что не загружается в развернутое приложение.

...