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

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

0
Shamim Hafiz - MSFT 10 Май 2010 в 14:58
Можете ли вы опубликовать полную информацию о вашем исключении / трассировке стека и т. Д.?
 – 
Neil Barnwell
10 Май 2010 в 15:13
Я смог решить это, увеличив сборку и версию файла. Перед сбоем я установил для него значение 1.0.0.4, а затем снова установил 1.0.0.0. Это вызвало сбой, но я изменил его на 1.0.0.5, и теперь он работает. Зачем вообще нужны эти два числа?
 – 
Shamim Hafiz - MSFT
10 Май 2010 в 15:29

2 ответа

Лучший ответ

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

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

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

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

1
Hans Passant 10 Май 2010 в 16:16

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

0
Chris O 10 Май 2010 в 15:08