.NET 4.0应用程序在没有Visual Studio的计算机上抛出异常

时间:2011-06-14 18:17:21

标签: .net vb.net visual-studio visual-studio-2010

我的应用程序在安装了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

更新:

New error

5 个答案:

答案 0 :(得分:7)

您需要获取异常的InnerException才能真正了解出现了什么问题。单击项目+属性,应用程序选项卡,单击查看应用程序事件按钮在编辑器窗口上方的左上方组合框中选择“(MyApplication Events)”,在右侧组合框中选择“Startup”。

添加了Startup事件处理程序。使它看起来类似于:

    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

现在,您将获得包含内部异常的堆栈跟踪。这应该足以找到炸弹的静态构造函数。发布您在问题中看到的堆栈跟踪,如果这没有帮助。

答案 1 :(得分:5)

当任何类型的构造函数抛出未捕获并正确处理的异常时,将抛出System.TypeInitializationException。字段的静态初始化也会抛出此异常。您需要确定它是哪种类型并进行相应的调试。最有可能的是,正如其他海报所说,你没有在目标机器上配置/部署的东西。

我已经看到这种情况发生在尝试访问不存在的配置文件条目,库不存在时等等。直到你得到详细的异常(你应该能够检查内部异常),它将更难以缩小范围。

<强>更新

在app.config中尝试此操作,因为错误消息中的文章建议:

<configuration>
   <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
   </runtime>
</configuration>

答案 2 :(得分:2)

您应该检查客户端计算机上安装的.NET版本 还要检查所有引用的程序集,如果有异常,请将它们添加到.bin文件夹

答案 3 :(得分:0)

您应该确保正确部署DevXpress程序集。 此外,错误消息指示您检查http://msdn.microsoft.com/en-us/library/ee191568(VS.100).aspx。你做到了吗?

答案 4 :(得分:0)

我之前发布了此in this SO question,我将在此处将其链接,因为它出现在我的Google搜索结果中。

摘要:

事实证明,对于目标框架为.NET 4.0或.NET 4.0 CP的项目,在我的项目案例Visual Basic DLL中,.NET 4.5中不存在一些DLL。

我的项目是一个升级到Visual Basic .NET(VB.net)的Visual Basic(VB6)项目,它以某种方式需要名为Microsoft.VisualBasic.PowerPacks.Vs.dll的DLL位于

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

将文件打包到安装程序中的InstallShield项目也无法检测到此依赖项。

我只是在意识到安装了Visual Studio后项目运行正常但在崩溃日志中没有“System.IOException.FileNotFound”之外没有特定警告的情况下才发现这一点。