Как заставить мое приложение использовать System.Data.dll из.net Framework 4.0 на рабочей станции, на которой установлена 4.5 .Net Framework?
У меня есть клиент-серверное приложение, которое общается через WCF. У меня есть метод, который отправляет System.Data.SqlClient.SqlConnection с сервера на клиент. После установки Visual Studio 2012 (которая установила.NetFramework 4.5) на рабочих станциях происходит сбой связи между сервером и клиентом при попытке отправить SqlConnection с сервера на клиент. Ошибка возникает из-за того, что Serializer, используемый в службе WCF, DataContractSerializer, не может сериализовать объект SqlConnection, потому что в.net Framework 4.5 есть новое свойство Credential типа SqlCredential, которое нельзя сериализовать. Вот ошибка:
System.Runtime.Serialization.InvalidDataContractException: Type 'System.Data.SqlClient.SqlCredential' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.
В моем решении я установил Target Framework на .Net Frameowrk 4.0 и даже установил в качестве ссылки на решение System.Data.dll из 4.0 Framework, чтобы заставить приложение использовать этот, а не тот из GAC. После этого в режиме отладки я не вижу свойства учетных данных, поэтому ясно, что он использует версию 4.0 System.Data.dll, но если я использую отражение для проверки типа SqlConnection, свойство Credential существует в объекте SqlConnection.:
var props = typeof(System.Data.SqlClient.SqlConnection).GetProperties();
foreach (var propie in props)
{
string propName = propie.Name;
}
Вопрос в том, как заставить мое приложение использовать System.Data.dll из.net Framework 4.0 на рабочей станции, на которой установлен 4.5 .Net Framework?
Благодарю вас