Я экспериментировал с номером версии сборки и файла. Хотя моя программа хорошо работает из IDE, но после создания файла установки и установки приложение вылетает с InvalidDeploymentException.
Что мне делать, чтобы решить эту проблему?
2 ответа
Атрибуты [AssemblyVersion] и [AssemblyFileVersion] играют разные роли. [AssemblyVersion] видна только для управляемого кода и важна для GAC. Каждый раз, когда вы вносите критическое изменение в публичный интерфейс сборки, вы должны увеличивать это число.
Компилятор встраивает неуправляемый ресурс в сборку с параметром командной строки / win32res. Сюда входит ресурс VERSIONINFO, доступный для чтения весь неуправляемый код, включая оболочку. Он определяет, что вы видите, когда щелкаете правой кнопкой мыши по сборке в проводнике и просматриваете страницу свойств Details. Показанное здесь значение «Версия файла» устанавливается атрибутом [AssemblyFileVersion]. Значение [AssemblyVersion] там не отображается, Проводник (пока) не знает, как это читать.
Вам решать, как использовать этот атрибут. Сбой указывает на то, что в коде развертывания выполняется некоторая минимальная проверка работоспособности, я никогда не пытался ошибиться, чтобы посмотреть, что произойдет. Однако сделать их такими же имеет большой смысл.
Microsoft использует [AssemblyFileVersion] по-другому, они автоматически увеличивают его для каждой сборки и прибивают [AssemblyVersion] вниз. Это хорошая идея, и я использую эту стратегию. Однако довольно иронично то, что функция автоматического увеличения версии работает точно в обратном порядке, она может только автоматически увеличивать [AssemblyVersion]. Вздох.
Попробуйте использовать программу просмотра журнала fusion, что не загружается в развернутом приложении.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.