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