私は(無料のオープンソースの)Entity Frameworkツールを開発しています。これは基本的にADO.NETプロバイダーですが、より高度な抽象化(ObjectContext、EntityConnectionなど)も使用しています。EFのほとんどすべてのレガシーバージョン(EF4 = <)をサポートする必要があります。EF5が出るまでは、.NET40だけをターゲットにして開発できたので、とても簡単でした。
一部の新機能には.NET45フレームワークが必要なため、EF5では事態がさらに複雑になりました。一方、EF5は.NET40もサポートしています。その上、EFは現在.NETFrameworkから独立して開発されています。
今のところ、.NET40と.NET45の両方をターゲットにすることは避けられないことは明らかです。しかし、現在、私は、独自に開発されたEFに準拠できるマルチターゲット環境をセットアップするための最良の方法が何であるかわかりません。また、この問題に関する適切なドキュメントも見つかりませんでした。
複数のソリューションファイルを使用する必要がありますか?複数のプロジェクトファイル?複数のソリューション構成?どういうわけかEFのすべてのバージョンを参照しますか?ユニバーサルビルドスクリプトを作成しますか?はいの場合、どのように?さまざまな構成に対して単体テストを実行するにはどうすればよいですか?特定の構成でテストが失敗する可能性がある/失敗する必要があることを示す方法は?変更された名前空間(ObjectContextなど)はどうですか?この競合を解決するには、#ifディレクティブを使用する必要がありますか?新しいEFリリースで、以前のバージョンとの互換性を損なう機能を実装する必要がある場合はどうなりますか?現時点では本当に不確かです。