2012-09-03 47 views

Odpowiedz

1

Nie, Kreator publikowania w Visual Studio tego nie oferuje.

Sugerowana jest publikacja lokalna i ręczna aktualizacja zaktualizowanych plików.

+0

Chcę downvote to tak źle. Dlaczego mieliby usunąć taką funkcję?!?!?! –

+0

@ScottBeeson Dodano tę funkcję w VS 2012 Update 2 - http://www.west-wind.com/weblog/posts/2013/May/10/Publish-Individual-Files-to-your-Server-in-Visual -Studio-20122 –

+0

to tylko dobry sposób, nawet używać VS 2012 Aktualizacja nr 2 nadal nie jest wygodna. Microsoft powinien dodać do tego potężną aplikację FTP GUI. – qakmak

3

Dla rekordu, pole wyboru "publikuj tylko zmienione pliki" znajdujące się w profilu publikowania VS2012 zostało usunięte z profilu publikowania VS2012. Jeden krok do przodu, dwa kroki do tyłu.

+2

Co więcej, okazuje się, że opcja VS2012 Web Deploy (w przeciwieństwie do opcji FTP) rzeczywiście wdroży tylko te zmiany, które wprowadziłeś. Jest nawet fantazyjny GUI "pokaż mi zmiany", który publikuje się za pośrednictwem https zamiast http (lub ftp), co jest świetne. Twoja firma hostingowa musi to wspierać, a na szczęście moja (dziękuję DiscountASP.net). Wszystko dobrze, z wyjątkiem jednej z moich stron klientów, które nie mogą korzystać z Web Deploy. Zoidbergi, może Web Deploy będzie działać w twoim przypadku. – gdoten

+1

Przeniosłem się teraz do Azure i wygląda na to, że w przypadku Azure tylko zmienione pliki są przesyłane. Może MS zaktualizowało system wdrażania za pomocą IIS8? – daniel

0

Zastosowanie node-> npm-> łyk oglądać je śledzić. W ten sposób przesyła tylko wtedy, gdy plik zostanie zmieniony i nie musisz w ogóle śledzić zestawu zmian. W każdym razie wszyscy powinniśmy teraz jeść łyk.

Konieczność samodzielnego zarządzania wszystkimi zasobami osobno lub zmuszona do przesłania całego opublikowanego pakietu jest po prostu szalona. Nie mogę uwierzyć, że studio visual, nawet najnowsza edycja 2015, nie ma nic lepszego. Bardzo smutno naprawdę.

Oto mój skrypt łyk, który pochodzi ze źródeł (właśnie oczyszczone to naprawdę):

`

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

Po prostu notka, przełączyłem się na gulp-watch, ponieważ gulp 4.0 to nadal alfa. Jest o wiele szybszy i lepiej radzi sobie z wydarzeniami (obsługuje także dodawanie i rozłączanie). Polecam zmodyfikować powyższe, jeśli masz zamiar użyć tego, dla impulsu łyk-zegarek. – Barry