dbファイル名を適切にエスケープしましたが、データソースをエスケープしなかったため、「(localdb)11.0」という名前のデータソースに接続しようとします。これは(ほとんどの場合)存在しません。
次のように適切にエスケープしてみてください:
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");