Microsoft.ExceptionMessageBox未被“找到”

时间:2009-09-29 16:20:09

标签: c# .net sql-server winforms dll

我有一个winform解决方案,我通过clickOnce部署。有一个主项目,然后是一个名为psWinForms的项目。该项目有一个我在自定义错误报告中使用的Microsoft.ExceptionMessageBox参考。

我在{$ 1}}的主项目中有psWinForms作为参考。

我在Copy Local = True Microsoft.ExceptionMessageBox

作为参考psWinForms

Copy Local = False & Specific Version = False我有Application Files

我尝试了各种组合无济于事。

我在这里查看DLL上的测试系统就在那里。

Publish Status =Prerequisite(Auto)

我正在使用SQL版本9.0.242.0中的ExceptionMessageBox,如果这有所不同并且用户只安装了SQL 2005 Express(9.0.1399.0)。

所以当我尝试使用此错误抛出错误时,我很困惑为什么我的应用程序会挂起....

2 个答案:

答案 0 :(得分:5)

您无法自行复制和部署程序集,必须将其作为SQL客户端组件的一部分进行安装。 SQL 2008和SQL 2005有不同的客户端组件,您的应用程序必须引用正确的组件。因此,您必须提供两个不同的应用程序,一个用于SQL 2005,另一个用于SQL 2008,您的用户必须安装正确的应用程序。来自Deploying an Exception Message Box Application

  

安装了例外消息框   由Microsoft SQL Server和   支持在您的自定义中使用   Windows应用程序改进   异常处理。因为   异常消息框由安装   除SQL之外的所有SQL Server版本   Server Compact 3.5 SP1,您可以使用它   没有其他配置   SQL Server上的任何计算机   客户端组件,包括SDK,   已安装。

虽然在技术上可能部署程序集并将其添加到GAC本身是一种不好的做法,因为您的dll不会成为正常的Service Pack链和累积升级补丁的一部分。

另外,您最好向MS代表了解是否使用SQL客户端使用许可证部署此dll standalone是否正常。可以在许可下重新分发的每个组件都有一个可供开发人员分发的安装msi。如果这个dll不是一个强大的指标,不允许由第三方(你)重新分配。

<强>更新

ExceptionMessageBox组件实际上有一个可分发的msi(SQLServer2005_EMB.msi,SQLServer2005_EMB_x64.msi):

  

在SQL Server 2005 SP1和更高版本中   发布,异常消息框是   也作为可再发行提供   你可以安装程序   随你的分发和部署   application ...可再发行   异常安装程序   消息框可在线获取   Feature Pack for SQL Server 2005 SP1的一部分。

答案 1 :(得分:1)

您是否在MAIN应用程序中引用了程序集?我没有看到列出的那个场景......我发现要复制本地工作,你需要在主应用程序参考列表中包含所有子项目引用,否则你会得到不可预测的结果。 此外,如果您需要使用特定文件,请确保使用特定版本。

App.config部分也是如此...如果您有项目级appconfigs,则必须将其与应用程序级app.config合并。