cuando publico mi sitio web ASP.NET (webforms) con Visual Studio 2012 siempre se cargan todos los archivos. Incluso imágenes?Publicación parcial de Visual Studio 2012
¿Hay alguna manera de publicar solo los archivos modificados?
cuando publico mi sitio web ASP.NET (webforms) con Visual Studio 2012 siempre se cargan todos los archivos. Incluso imágenes?Publicación parcial de Visual Studio 2012
¿Hay alguna manera de publicar solo los archivos modificados?
Para su información: Microsoft añadió que en función de VS 2012 Actualización # 2:
No, el Asistente de publicación en Visual Studio no ofrece esto.
Una sugerencia es publicar localmente y solo actualizar manualmente los archivos modificados.
Quiero downvote esto TAN mal. ¿Por qué eliminarían esa función?!?!?! –
@ScottBeeson Se añadió esta característica en VS 2012 Actualización 2 - http://www.west-wind.com/weblog/posts/2013/May/10/Publish-Individual-Files-to-your-Server-in-Visual -Estudio-20122 –
que es una buena manera única, incluso el uso de VS 2012 actualización # 2 todavía no se siente cómodo. Microsoft debería agregar una potente aplicación FTP GUI para esto. – qakmak
Para el registro, la casilla de verificación "publicar solo archivos modificados" que estaba en el perfil de publicación de VS2012 se ha eliminado del perfil de publicación de VS2012. Un paso hacia adelante, dos hacia atras.
Y aún más para el registro: Resulta que la opción VS2012 Web Deploy (a diferencia de la opción FTP) será efectivamente desplegar sólo los cambios realizados. Incluso hay una elegante GUI "muéstrame los cambios" y se publica sobre https en lugar de http (o ftp), que es genial. Su empresa de hosting debe soportar esto, y afortunadamente la mía sí (gracias a DiscountASP.net). Todo está bien, excepto uno de mis sitios cliente que no puede usar Web Deploy. Zoidbergi, tal vez Web Deploy funcionará en tu caso. – gdoten
Me mudé a Azure ahora y parece que con Azure solo se cargan los archivos modificados. ¿Tal vez MS actualizó el sistema de implementación con IIS8? – daniel
Uso node-> npm-> trago reloj para realizar un seguimiento de ellos. De esta forma, solo se carga cuando se cambia un archivo y no es necesario que rastree el conjunto de cambios. Todos deberíamos estar usando gulp en estos días de todos modos.
Tener que gestionar manualmente todos los activos de forma individual, o verse obligado a cargar todo el paquete publicado, es una locura. mi parte, no se puede creer visual studio, incluso la más reciente edición de 2015, no tiene algo mejor. Muy triste realmente.
Aquí es mi guión trago, que se obtiene de (acabo limpié en realidad):
`
var gulp = require('gulp'),
gutil = require('gulp-util'),
vftp = require('vinyl-ftp');
var fconfig {
host: "127.0.0.1",
port: "21",
user: "root",
password: "top-secret-tacos",
simultaneous_connections: 5,
file_lock_delay: 450, // ms to wait for lock release. "meh".
local_path: ".",
remote_path: "/my_path/as_seen/in_ftp/",
globs: {
"/assets/src/**/*.*css",
"/assets/src/**/*.js",
"/assets/dist/**/*",
"/**/*.ascx", // track .net changes and upload instantly when saved.
// don't track visual studio stuff.
"!./obj/**/*",
"!./bin/**/*",
"!./packages/",
"!./App_LocalResources/**/*",
"!./vs/**/*",
"!./properties/**/*",
"!./node_modules/**/*"
}
};
// Add debounce to gulp watch for FTP
(function ftp_debounce_fix(){
var watch = gulp.watch;
// Overwrite the local gulp.watch function
gulp.watch = function(glob, opt, fn){
var _this = this, _fn, timeout;
// This is taken from the gulpjs file, but needed to
// qualify the "fn" variable
if (typeof opt === 'function' || Array.isArray(opt)) {
fn = opt;
opt = null;
}
// Make a copy of the callback function for reference
_fn = fn;
// Create a new delayed callback function
fn = function(){
if(timeout){
clearTimeout(timeout);
}
console.log("Delayed Task setup[450].");
timeout = setTimeout(Array.isArray(_fn) ? function(){
_this.start.call(_this, _fn);
} : _fn, fconfig.file_lock_delay);
};
return watch.call(this, glob, opt, fn);
};
})();
function getFtpConnection() {
return vftp.create({
host: fconfig.host,
port: fconfig.port,
user: fconfig.user,
password: fconfig.pass,
parallel: fconfig.simultaneous_connections,
log: gutil.log
});
}
gulp.task('deploy', function() {
var conn = getFtpConnection();
return gulp.src(fconfig.globs, { base: fconfig.local_path, buffer: false })
.pipe(conn.newer(fconfig.remote_root)) // only upload newer files
.pipe(conn.dest(fconfig.remote_root))
;
});
gulp.task('deploy-watch', function() {
var conn = getFtpConnection();
gulp.watch(fconfig.globs)
.on('change', function(event) {
console.log('Changes detected! Uploading file "' + event.path + '", ' + event.type);
return gulp.src([event.path], { base: fconfig.local_path, buffer: false })
.pipe(conn.newer(fconfig.remote_root)) // only upload newer files
.pipe(conn.dest(fconfig.remote_root))
;
});
});`
sólo una nota, he cambió a tragar-reloj, ya que sigue siendo trago 4.0 alfa. Es mucho más rápido y maneja mejor los eventos (admite agregar y desvincular también). Recomendamos que modifiques lo anterior si vas a usar eso, para una impl de gulp-watch. – Barry
se aplica a 2013 también! –