引用Microsoft.SqlServer.Smo的应用程序需要在Target Machine上包含其他程序集吗?

Tim*_*ine 5 .net reference

我有一个小应用程序,它引用了Microsoft.SqlServer.Smo程序集(因此我可以向用户显示它们可以连接的服务器和数据库的列表).

我的应用程序最初引用了Microsoft.SqlServer.Smo和Microsoft.SqlServer.ConnectionInfo.事情在我的开发盒上按预期工作.

当我在测试机器上安装应用程序时,我收到了System.IO.FileNotFoundException.消息的详细信息包括以下内容: 无法加载文件或程序集Microsoft.SqlServer.SmoEnum

除了上面提到的那些之外,我最终通过引用以下程序集解决了这个问题:

  • Microsoft.SqlServer.SmoEnum
  • Microsoft.SqlServer.SqlEnum
  • Microsoft.SqlServer.BatchParser
  • Microsoft.SqlServer.Replication

任何人都可以确认我确实需要在我的应用程序中包含这些附加程序集(并因此将它们安装在用户的计算机上),即使应用程序在我的开发盒上构建正常而没有引用它们吗?

Dav*_*kol 2

是的,它们确实需要包括在内。在开发计算机上,您可能安装了 SQL Server,它将这些程序集放入全局程序集缓存中。每当您构建时,Visual Studio 都会从 GAC 中提取它们。它还假设将部署它的任何计算机的 GAC 也将具有这些文件。如果没有,它会抛出 FileNotFound 异常。