2010-05-10 4 views
0

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

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

+0

Можете ли вы опубликовать полную информацию о вашей трассе исключения/стека и т. Д.? –

+0

Я смог решить проблему, увеличив сборку и версию файла. Перед сбоем я установил его в значение 1.0.0.4, а затем вернул его в 1.0.0.0. Это вызвало сбой, но я изменил его на 1.0.0.5, и теперь он работает. В чем же необходимость этих двух чисел? –

ответ

1

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

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

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

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

0

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

Смежные вопросы