Каждый раз, когда я обновляю свою модель данных, она принимает значение 2008, нарушая развертывание сервера 2005 года. Это что-то, кроме действия по сборке, которое я могу использовать, чтобы остановить это?
Используя MSBuild.Community Tasks , я добавил цель BeforeBuild, которая использует задачу XmlUpdate, чтобы всегда менять ProviderManifestToken на 2005, в случае, если кто-то изменил ее, обновив модель данных.
Вот цель BeforeBuild:
<Target Name="BeforeBuild"> <XmlUpdate Prefix="ssdl" Namespace="http://schemas.microsoft.com/ado/2009/02/edm/ssdl" XPath="//ssdl:Schema/@ProviderManifestToken" XmlFileName="Model.edmx" Value="2005"/>
Я нашел этот вопрос, потому что мне нужно было предотвратить обновление EDMX до Sql Server 2012 (с 2008 года). Я также использовал MSBuild.CommunityTasks , но использовал немного более общее выражение XPath, чтобы избежать использования пространства имен (которое отличается от того, что показано в ответе jnosek):
<XmlUpdate XmlFileName="Orders\Model.edmx" XPath="//*[local-name() = 'Schema']/@ProviderManifestToken" Value="2008"/>
Если вы подключитесь к БД / серверу 2005 года при обновлении, то оно останется на 2005. Это, или ручное редактирование, это единственные известные мне способы.