每当我更新我的数据模型时,它都会使这个值达到2008,从而打破了2005年的服务器部署。除了构建动作之外,他们可以使用什么来阻止它吗?
答案 0 :(得分:1)
使用MSBuild.Community Tasks,我添加了一个BeforeBuild Target,它使用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"/>
答案 1 :(得分:0)
如果您在更新时连接到2005 DB /服务器,那么它将保留在2005年。那个或手动编辑是我所知道的唯一方式。
答案 2 :(得分:0)
我发现了这个问题,因为我需要阻止EDMX升级到Sql Server 2012(从2008年开始)。我还使用了MSBuild.CommunityTasks,但是使用了一个稍微更通用的XPath表达式来避免使用命名空间(它已经从jnosek的回答中改变了):
<XmlUpdate XmlFileName="Orders\Model.edmx"
XPath="//*[local-name() = 'Schema']/@ProviderManifestToken"
Value="2008"/>