如何在Silverlight XAP中包含PDB文件?

时间:2010-08-02 21:43:45

标签: silverlight debugging

在VS 2008中是否有一种方法可以指定我想在xap生成的所有/某些dll中包含pdb文件?

背景

我们编写了一个Silverlight框架,该框架由多个项目使用,具有一些基本的UI控件和功能。这些框架dll和pdbs通过svn:externals引入项目到lib文件夹中。 Silverlight应用程序引用项目的lib文件夹中的dll,并将Copy Local设置为True。编译时,dll包含在xap中,但pdb不包含在xap中。如果我没有满足框架dll的前提条件(即未设置控件的ItemSource),则抛出错误。我在VS 2008中的例外对话框中检查了“抛出”和“用户未处理”的CLR异常。附加了VS 2008后,我没有报告任何错误。由于标准生成的Application_UnhandledException处理程序不会在连接调试器时警告未处理的错误,并且由于某种原因VS不会破坏错误。如果我在xap中手动包含pdbs,则VS会在正确的行上停止显示错误。

    Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As ApplicationUnhandledExceptionEventArgs) Handles Me.UnhandledException

        ' If the app is running outside of the debugger then report the exception using
        ' the browser's exception mechanism. On IE this will display it a yellow alert 
        ' icon in the status bar and Firefox will display a script error.
        If Not System.Diagnostics.Debugger.IsAttached Then

            ' NOTE: This will allow the application to continue running after an exception has been thrown
            ' but not handled. 
            ' For production applications this error handling should be replaced with something that will 
            ' report the error to the website and stop the application.
            e.Handled = True
            Deployment.Current.Dispatcher.BeginInvoke(New Action(Of ApplicationUnhandledExceptionEventArgs)(AddressOf ReportErrorToDOM), e)
        End If
    End Sub

1 个答案:

答案 0 :(得分:1)

您应该将PDB文件放在XAP旁边。如果您愿意,可以使用构建后操作执行此操作。

确保您的Web服务器可以为PDB提供服务,它们在某些默认配置中被锁定。只需通过浏览器请求PDB,看看它是否会下载。如果没有,请为服务器添加MIME类型以用于x-application / octet-stream。