2011-04-23 27 views
8

Estoy creando un paquete personalizado que necesita modificar el archivo web.config de la aplicación de destino, pero mis cambios de configuración nunca aparecen en la aplicación de destino después de la instalación.NuGet web.config.transform issue

Aquí está mi archivo web.config.transform:

 
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="AppInstalled" value="false"/> 
    </appSettings> 
</configuration> 

Esta tecla de la sección appsettings nunca se aplica.

Aquí está mi archivo nuspec:

 
<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <authors>$author$</authors> 
    <owners>$author$</owners> 
    <licenseUrl>http://mvcapp.codeplex.com/license</licenseUrl> 
    <projectUrl>http://mvcapp.codeplex.com/</projectUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>$description$</description> 
    <tags>mvc app</tags> 
    </metadata> 
    <files> 
    <file src="\bin\Release\MvcApp.MVC3.dll" target="lib" /> 
    <file src="NuGet\Content\ajax-loader.gif" target="Content" /> 
    <file src="NuGet\Content\web.config.transform" target="web.config" /> 
    <file src="NuGet\Views\Install\Index.aspx" target="Views\Install\Index.aspx" /> 
    </files> 
</package> 

Aquí está el comando corro para empaquetar el proyecto desde el símbolo del sistema VS 2010:

nuget pack mvcapp.csproj

alguna idea?

Gracias.

Respuesta

19

El archivo web.config.transform tiene que ir a la carpeta de contenido:

<file src="NuGet\Content\web.config.transform" target="content" /> 
+3

Sí, ese fue solo uno de los problemas que descubrí en mi archivo nuspec. Revisé nuevamente la documentación y recurrí a eliminar el elemento "archivos" en el archivo nuspec y usar la convención NuGet con las carpetas/lib y/content debajo de la carpeta con el archivo nuspec. Funcionó mucho mejor para mí. Gracias. – Kahanu

+0

Además de eso, descubrí que la transformación no funcionará si el nodo ya existe en la solución de destino. xdt funciona mejor para mí: Calvin

0

Sé que esto es una cuestión de edad, pero es uno de los mejores resultados de Google cuando se busca por las que un web.config .transform no se aplicará, así que espero no estar fuera de lugar aplicando esto aquí.

TLDR; - borre sus archivos nuget del directorio de paquetes del proyecto de destino (o asumo el número de versión) entre las iteraciones de prueba.

Versión completa; Tuve este problema también. Pude ver usando NuGet Package explorer que mi proyecto fue empaquetado apropiadamente. Tenía mi web.config.transform en "contenido" y mis libs en sus respectivas carpetas de lib. Los dll se estaban desplegando, la web.config.transform no se estaba aplicando.

El proyecto de destino con el que estaba realizando la prueba estaba bajo control de fuente, por lo que agregaría el paquete nuget, vería lo que sucedió y luego retrotraería todo el directorio. Sin embargo, no me di cuenta de que la carpeta de paquetes no estaba bajo control de fuente, por lo que las carpetas de mi paquete inicial de instalación estaban ahí. Tampoco estaba subiendo el número de versión en el paquete nuspec, porque no creía que fuera necesario.

Al final terminé teniendo que borrar el directorio de mi paquete nuget del directorio de paquetes del proyecto, forzando el próximo intento de instalación nuget para recrearlos.