.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
フォルダーしかないためです。
では、このようなシナリオは通常どのように処理されるのでしょうか?