我有一个面向 .NET 4.5 的 Windows 窗体应用程序。该应用程序提供了使用 SQL Server 管理对象 (SMO) 进行程序化数据库备份和还原的功能。
该应用程序应支持 SQL Server 2008 R2 和 SQL Server 2012 的 Express 版本,因为它仅使用两个版本都支持的功能。
现在,项目中要引用的 SMO 程序集(Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended
等)将位于不同的文件夹中,具体取决于客户端安装的 SQL Server 版本
SQL Server Express 2008 R2: C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies
SQL Server Express 2012: C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies
如您所见,当客户端运行 2008 R2 时,程序集将位于该100\SDK
文件夹中,而对于那些想要运行 SQL Server 2012 的程序集,它们将位于该110\SDK
文件夹中。
因此,如果我引用该100\SDK
文件夹,则应用程序将对运行 SQL Server 2012 的客户端中断,因为它们只有该110\SDK
文件夹。
那么这种情况一般是如何处理的呢?