Приложение .NET 4.0 создает исключение на компьютере без Visual Studio - PullRequest
2 голосов
/ 14 июня 2011

Мое приложение отлично работает на всех компьютерах, на которых установлена ​​Visual Studio, но не работает на компьютере, на котором нет Visual Studio.

Приложение просто падает при запуске с этим сообщением в окне просмотра событий:

Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException
Stack:
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(System.String[])
at IssueTrackingSystem.My.MyApplication.Main(System.String[])

Я протестировал простое приложение с одной кнопкой, те же результаты.

Error

UPDATE:

New error

Ответы [ 5 ]

8 голосов
/ 14 июня 2011

Вам нужно получить исключение InnerException, чтобы действительно знать, что происходит не так.Проект + Свойства, вкладка «Приложение», нажмите кнопку «Просмотр событий приложения».В верхнем левом поле со списком над окном редактора выберите «(MyApplication Events)», в правом поле со списком выберите «Автозагрузка».

, который добавляет обработчик события запуска.Сделайте так, чтобы это выглядело примерно так:

    Private Sub MyApplication_Startup(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf KaboomHandler
    End Sub

    Private Sub KaboomHandler(sender As Object, e As UnhandledExceptionEventArgs)
        MsgBox(e.ExceptionObject.ToString())
        Environment.Exit(1)
    End Sub

Теперь вы получите трассировку стека, включающую внутреннее исключение.Этого должно быть достаточно, чтобы найти статический конструктор, который бомбит.Опубликуйте трассировку стека, которую видите в своем вопросе, если это не поможет.

5 голосов
/ 14 июня 2011

A System.TypeInitializationException будет выброшено, когда конструктор для любого типа генерирует исключение, которое не перехвачено и обработано надлежащим образом. Статическая инициализация полей также вызовет это исключение. Вам нужно будет определить, какой это тип, и соответственно отладить. Скорее всего, как говорили другие авторы, на целевой машине что-то не настроено / развернуто.

Я видел, как это происходило при попытке получить доступ к записям файла конфигурации, которых не было, когда не было библиотек и т. Д. будет сложнее сузиться.

UPDATE:

Попробуйте это в файле app.config, поскольку статья в сообщении об ошибке предлагает:

<configuration>
   <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
   </runtime>
</configuration>
2 голосов
/ 14 июня 2011

Вам следует проверить версию .NET, установленную на клиентском компьютере.
Также проверьте все сборки, на которые есть ссылки, и, если есть какие-то необычные, добавьте их в папку .bin

0 голосов
/ 10 апреля 2015

Я ранее разместил это в этом вопросе , и я собираюсь связать его здесь, так как он появился в моих результатах поиска Google.

Краткое изложение этого:

Оказывается, что для проекта с Target Framework, например .NET 4.0 или .NET 4.0 CP, есть некоторые библиотеки DLL, которых нет в .NET 4.5, в случае Visual Basic для моего проекта.

Мой проект был проектом Visual Basic (VB6), обновленным до Visual Basic .NET (VB.net), и ему как-то требовалась библиотека DLL с именем Microsoft.VisualBasic.PowerPacks.Vs.dll, расположенная в

C:\Program Files\Reference Assemblies\Microsoft\VBPowerPacks\v10.0

Проект InstallShield, который упаковывает файлы в установщик, также не может обнаружить эту зависимость.

Я узнал об этом только после того, как понял, что Проект работает нормально с установленной Visual Studio, но вылетает без специального предупреждения, кроме «System.IOException.FileNotFound» в журнале сбоев.

0 голосов
/ 14 июня 2011

Вы должны убедиться, что сборки DevXpress правильно развернуты.Также в сообщении об ошибке указывается проверить http://msdn.microsoft.com/en-us/library/ee191568(VS.100).aspx. Вы это сделали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...