2012-09-03 31 views

Respuesta

1

No, el Asistente de publicación en Visual Studio no ofrece esto.

Una sugerencia es publicar localmente y solo actualizar manualmente los archivos modificados.

+0

Quiero downvote esto TAN mal. ¿Por qué eliminarían esa función?!?!?! –

+0

@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 –

+0

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

3

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.

+2

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

+1

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

0

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)) 
     ; 
    }); 
});` 
+0

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

Cuestiones relacionadas