12

generalmente pongo mi cadena de conexión en un archivo separado, añadiendo algo como esto en web.config:Publicación con un clic en vs 2012: cómo eliminar _ConnectionStringsToInsert?

<connectionStrings configSource="WebConnection.config" /> 

Acabo de instalar VS 2012 y automáticamente detectados mi configuración existentes publicar. Sin embargo, cuando hago una WebPublish ahora añade dos cadenas de conexión por sí mismo, por lo que mi web.config en el destino de despliegue ahora se ve así:

<connectionStrings configSource="WebConnection.config"> 
    <add name="EF.Model.DbContext" connectionString="EF.Model.DbContext_ConnectionString" providerName="System.Data.SqlClient" /> 
    <add name="Migrations.Db.MigrationDb" connectionString="Migrations.Db.MigrationDb_ConnectionString" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

sin duda, que produce un error (contenido del nodo deben estar vacíos cuando se usa configSource). me di cuenta, que en los archivos .pubxml recién generados (en la que la configuración de publicación se almacenan ahora) hay líneas siguientes:

<ItemGroup> 
    <_ConnectionStringsToInsert Include="EF.Model.DbContext" /> 
    <_ConnectionStringsToInsert Include="Migrations.Db.MigrationDb" /> 
    </ItemGroup> 

¿Cómo puedo eliminarlos? :) Si los elimino del archivo, el diálogo de publicación web los agrega cada vez que edito la configuración de publicación.

+0

Lamentamos que te encuentres con esto, hemos presentado un error para esto y trataremos de encargarnos de esto. –

+3

@SayedIbrahimHashimi ¿Sabes si este error se resolvió alguna vez? Me estoy encontrando con este problema. – IanW

Respuesta

6

De repente resolví yendo a las propiedades del proyecto, "Paquete/Publicar web" y comprobando la marca "Incluir todas las bases de datos configuradas en la pestaña P/P SQL" (y no tengo ningún DB configurado allí :)) .

Después de hacer esto y eliminar las líneas mencionadas de .pubxml todo fue bien.

parece un truco, pero era un camino a seguir para mí :)

@Sayed, gracias por confirmar que es un error, espero que sea resuelto!

+4

Esta solución no parece hacer que esas líneas se mantengan alejadas. Todavía regresan cada vez que va a la página de configuración de cadenas de conexión en el cuadro de diálogo Publicar. – Brannon

1

En la ficha Configuración del perfil de publicación, desactive la Utilice esta cadena de conexión casilla de verificación en tiempo de ejecución en y la casilla de verificación Aplicar código Primeras migraciones. Asegúrese de que las migraciones estén habilitadas, o Usar esta cadena de conexión. El cuadro no se borrará, e incluso entonces tendrá que volver a borrarlo cada vez que abra el perfil.

4

Se me ocurrió una solución (posiblemente) menos hacky para eludir el error en la publicación que obliga a descubrir contextos de contexto de base de datos del primer código de Entity Framework para tener una cadena de conexión. Esto sigue siendo un problema que estoy teniendo en VS 2013.

En su web.config, agregue una versión ficticia de la cadena de conexión:

<add name="DbContextName" connectionString="This is a dummy connection string to bi-pass publish bug." providerName="System.Data.SqlClient" /> 

Ahora, la configuración de una transformación para la configuración que desea para crear un paquete de publicación para. Lea más al respecto here. .

En su web.config archivo de configuración {}, utilice la siguiente transformación para eliminar la cadena de conexión:

<connectionStrings> 
    <add name="DbContextName" xdt:Transform="Remove" xdt:Locator="Match(name)"/> 
</connectionStrings> 

esta transformada se ejecuta después de la publicación de transformar en sus carreras pubxml, por lo que borra los no deseados Cadena de conexión.

+0

Si no tiene habilitadas las migraciones según la respuesta de tdykstra, esta parece ser la única solución. El proceso de Web Deploy no intentará agregar cadenas de conexión si las ve ya en el archivo web.config, y la transformación de compilación las eliminará alegremente del archivo web.config durante el proceso de compilación. – Clint

+0

Esta solución también funcionó para mí, el único cambio que hice fue en ** Web.Release.config **, usando esto '' eliminó todas las cadenas de conexión en un trazador de líneas. –

Cuestiones relacionadas