Vous avez correctement échappé le nom de fichier db mais pas la source de données, il essaie donc de se connecter à une source de données nommée "(localdb)11.0", qui (très probablement) n'existe pas.
Essayez de l'échapper correctement comme ceci :
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");