Existen varias formas de hacer esto. Personalmente encontré bastante útil armar un .Bat, que básicamente hace lo siguiente:
1. Compila la aplicación en modo Release
2. Ejecuta un test de validación en NUnit
3. Compila las páginas aspx usando aspnet_compiler
4. Une las páginas en una dll usando aspnet_merge
5. Borra los archivos que no deberían publicarse (basicamente los .config)
6. Borra los archivos de más de 45 días (este es un tunnig personal, que sirve cuando se realizan publicaciones con cierta frecuencia)
7. Borra las carpetas vacías
8. Arma un zip
9. Lo sube por ftp
El paso 10 es manual. En mi caso, me conecto vía remote desktop y ejecuto otro bat que descomprime el zip subido y lo copia en la carpeta del sitio.
Este es el .Bat:
@echo off
setlocal
call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild C:\Source\app.sln /t:Build /p:Configuration=Release
if %errorlevel% gtr 0 goto end
call "c:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" c:\Source\Test\bin\Test.dll
if %errorlevel% gtr 0 goto end
echo on
set base=c:\temp\publish
if not exist %base% md %base%
rd /s /q %base%
md %base%
echo compiling to %base%
"c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler" -v / -p C:\Source\Web\ -f -d %base%
if %errorlevel% gtr 0 goto end
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\aspnet_merge" %base% -w app.dll
if %errorlevel% gtr 0 goto end
endlocal
echo web compiled to %base%
goto makezip:
:errnoparam
echo usage: %0 web
goto end
:errnotfound
echo web %1 not found
goto end
:makezip
cd c:\temp\publish
echo "Borra los archivos que no deberían pasar"
del publish.bat
del *.vbproj
del web.config
del app.config
del c:\temp\publish\Reports\*.rdlc
rd pdftemp /S /Q
echo "Borra los archivos de mas de 45 días"
forfiles /s /M *.* /d -45 /c "cmd /c del /q @path"
echo "Borra las carpetas vacias"
setLocal EnableDelayedExpansion
dir/b/s/ad c:\temp\publish | sort /r > sdlist
for /f "tokens=* delims= " %%d in (sdlist) do (
rd %%d 2>nul
)
del publish.zip
"c:\Program Files\WinRAR\WinRAR.exe" a -r -afzip publish
:ftp
echo "ftp upload"
@echo off
echo user miusuario> ftpcmd.dat
echo mipassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo hash>> ftpcmd.dat
echo put c:\temp\publish\publish.zip>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat misitio.com
del ftpcmd.dat
:end
pause
1 comentario:
Pueden poner esto mismo para VS 2008
Publicar un comentario