Usando @ aplicación de consola práctica de Vance anterior, he utilizado la siguiente como un evento BeforeBuild
<Target Name="BeforeBuild">
<!--Check out BD.edmx, Another.edmx, all configs-->
<Exec Command="$(SolutionDir)\Library\tf checkout /lock:none $(ProjectDir)Generation\DB.edmx" />
<Exec Command="$(SolutionDir)\Library\tf checkout /lock:none $(ProjectDir)Generation\Another.edmx" />
<!--Set to 2008 for Dev-->
<Exec Condition=" '$(Configuration)' == 'DEV1' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\DB.edmx 2008" />
<Exec Condition=" '$(Configuration)' == 'DEV1' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\Another.edmx 2008" />
<Exec Condition=" '$(Configuration)' == 'DEV2' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\DB.edmx 2008" />
<Exec Condition=" '$(Configuration)' == 'DEV2' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\Another.edmx 2008" />
<!--Set to 2005 for Deployments-->
<Exec Condition=" '$(Configuration)' == 'TEST' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\DB.edmx 2005" />
<Exec Condition=" '$(Configuration)' == 'TEST' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\Another.edmx 2005" />
<Exec Condition=" '$(Configuration)' == 'PRODUCTION' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\DB.edmx 2005" />
<Exec Condition=" '$(Configuration)' == 'PRODUCTION' " Command="$(SolutionDir)Library\SetEdmxSqlVersion $(ProjectDir)Generation\Another.edmx 2005" />
</Target>
Esto es super práctico, ya que evita el redespliegue molesto. Gracias por compartir Vance.
He agregado TF.exe a la carpeta de la solución de la Biblioteca y esto ayuda, ya que ahora puedo verificar los archivos de edmx antes de intentar editarlos, como parte de la compilación. También he agregado esto con las condiciones, de modo que se establezca en 2005 para las implementaciones en el servidor y en 2008 para las configuraciones sln de la máquina Dev. También mencionar que necesita agregar el archivo (s) SetEdmxSqlVersion.exe (y .pdb) a la carpeta de la Biblioteca (o en cualquier otro lugar donde desee conservar estos bits).
Muchas gracias @Vance. realmente aseado, ahorro de tiempo enorme y mantiene mi construye totalmente automatizado y sin dolor :)
He votado esto por error, deshice eso, pero ahora no puedo hacer lo que realmente quería hacer, ¡que es votar por él! Gracias por encontrar el problema. Si entiendo correctamente, ¿el valor cambia de 2005 a 2008 debido a la actualización del modelo de la base de datos, donde la base de datos es un SQL 2008 DB? En mi entorno, mi máquina desarrolladora tiene SQL 2008, pero el entorno de prueba tiene 2005 (que también tiene producción). Hasta que migremos a 2008, ¿estoy en lo cierto al suponer que esto seguirá ocurriendo? – jamiebarrow
Generalmente establezco esto en 2005, que es la base de datos de producción; Estoy usando 2008 para el desarrollo. 2008 es compatible con versiones anteriores, por lo que no hay problemas. También esto se cambiará después de una actualización/generar. Siempre valido esto al registrar el EDMX después de una experiencia amarga. –
WOW, excelente repetición, gracias Rechard –