Silverlight应用程序的测试、调试、打包与部署
立即解锁
发布时间: 2025-08-25 01:57:41 阅读量: 2 订阅数: 13 

### Silverlight应用程序的测试、调试、打包与部署
#### 1. Silverlight调试基础
调试Silverlight应用程序与传统Windows应用程序的.NET代码调试差异不大。主要区别在于,Silverlight插件托管在浏览器中,且Silverlight平台上的代码运行在CoreCLR上,这是一个与系统中其他CLR实例完全分离的运行时。同时,Silverlight工具不支持编辑并继续、即时或混合模式调试。
#### 2. 控制调试器
System.Attribute是自定义属性的基类,包括System.Diagnostics命名空间中的属性。应用程序诊断属性为调试器提供线索和更多信息,具体属性如下表所示:
| Attribute | Description |
| --- | --- |
| DebuggableAttribute | 用于向JIT编译器和调试器提供与配置相关的线索,例如禁用优化。这是唯一可能影响编译过程的类,其他类只是调试器的辅助类,不影响生成的代码。 |
| DebuggerBrowsableAttribute | 控制成员在调试器中的显示。有效值为Collapsed、Never(成员从不显示)和RootHidden(适用于集合;显示单个项目而不显示根)。 |
| DebuggerDisplayAttribute | 指定在调试器中为该成员装饰的成员的值列中应显示的内容。 |
| DebuggerHiddenAttribute | 用于在调试器中隐藏成员。 |
| DebuggerNonUserCodeAttribute | 指示类型/成员不是用户代码的一部分,应在调试器中隐藏,不进入该方法。这实际上是DebuggerHiddenAttribute和DebuggerStepThroughAttribute的组合。 |
| DebuggerStepThroughAttribute | 应用于方法时,调试器会直接跳过该方法而不停顿;不过,如果设置了断点,调试器会在断点处停止。 |
如果你有长方法或长时间运行的方法,且不想在调试器中手动跳过,可以使用DebuggerStepThroughAttribute属性,以节省时间。以下是一个示例:
```csharp
[DebuggerStepThrough]
private bool validateIpAddress(string ipAddress)
{
// parse ipAddress and validate that it's a correct IPv4 address
}
```
#### 3. System.Diagnostics.Debug类
System.Diagnostics.Debug类提供了两个有用的静态方法:
- WriteLine:用于将信息发送到调试器输出。该方法在底层使用Windows OutputDebugString,因此仅在Windows调试器上有效。由于Silverlight中没有像.NET on Windows那样的调试监听器/跟踪监听器,Debug.WriteLine方法是写入调试输出的主要方式。你可以附加调试器,并在Visual Studio的输出窗口或其他调试查看器中查看输出。
- Assert:用于测试代码中的某些假设。Assert方法(及其重载)接受一个布尔参数作为测试条件。当条件为false时,在发布模式下会显示一个对话框,或者调试器会中断。
#### 4. 调试启动配置
在开发Silverlight应用程序时,你可以使用开发Web服务器或其他Web服务器(如IIS或Apache)来调试应用程序。创建Silverlight项目时,在解决方案中包含网站或Web应用程序,然后将IIS(或Apache)指向该项目,就可以像在真实服务器上部署一样调试Silverlight应用程序。这有助于确保服务器端配置正确,主要是确保Web服务器能够提供XAP文件和可能用于调试的PDB文件。
如果创建的Silverlight应用程序没有附带网站/ Web应用程序,仍然可以从Visual Studio调试该应用程序。你可以通过以下步骤完成:
1. 打开Silverlight应用程序的属性页面。
2. 确保“动态生成测试页面”已设置(或设置为特定页面)。
3. 该页面和Silverlight应用程序将托管在开发Web服务器中,你可以调试应用程序。
启动配置完成后,你可以设置断点并像调试其他应用程序一样调试Silverlight应用程序。如果已经有浏览器在Visual Studio外部运行Silverlight应用程序,可以通过以下步骤将调试器附加到宿主进程:
1. 在Visual Studio中,转到“调试”菜单,选择“附加到进程”。
2. 如果调试ASP.NET,将调试器附加到ASP.NET工作进程(即浏览器)。同样,将Visual Studio调试器附加到托管Silverlight插件的进程(即浏览器)。
3. 在“附加到进程”对话框中,点击“选择”以限制调试器关注的代码类型。你可以选择默认选项让调试器自动确定代码类型,也可以手动选择专注于Silverlight。
#### 5. 调试浏览器外应用程序
随着Visual Studio 2010和Silverlight 4的发布,对调试浏览器外应用程序提供了更多支持。在Visual Studio中,在Silverlight项目属性页面的“调试”选项卡上,将“启动操作”设置为“已安装的浏览器外应用程序”。启动调试时,Visual Studio将启动浏览器外应用程序并自动附加调试器。使用此功能前,必须先从浏览器运行并安装该应用程序。如果解决方案中有Web项目,还必须将Silverlight项目设置为启动项目。
#### 6. 处理未处理的异常
在软件开发中,异常时有发生。作为开发者,你需要处理异常,以构建稳定且能抵御常见问题的应用程序。有时候,不可控的条件或未考虑到的情况会引发异常,Application类为此提供了一个未处理异常处理程序。
默认情况下,Silverlight应用程序通过以下未处理异常处理程序将未处理的异常传递给浏览器:
```csharp
private void Application_UnhandledException
(object sender, ApplicationUnhandledExceptionEventArgs e)
{
// 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 (!System.Diagnostics.Debugger.IsAttached)
{
// NOTE: This will allow the application to continue
//running after an exception has been thrown
// but not handled.
// For prod
```
0
0
复制全文
相关推荐










