kiedy publikuję moją witrynę ASP.NET (webforms) za pomocą Visual Studio 2012 zawsze przesyłane są wszystkie pliki. Nawet obrazy?Visual Studio 2012 częściowe publikowanie
Czy istnieje sposób publikowania tylko zmienionych plików?
kiedy publikuję moją witrynę ASP.NET (webforms) za pomocą Visual Studio 2012 zawsze przesyłane są wszystkie pliki. Nawet obrazy?Visual Studio 2012 częściowe publikowanie
Czy istnieje sposób publikowania tylko zmienionych plików?
Wystarczy FYI: Microsoft dodał tę funkcję w VS 2012 Aktualizacja # 2:
Nie, Kreator publikowania w Visual Studio tego nie oferuje.
Sugerowana jest publikacja lokalna i ręczna aktualizacja zaktualizowanych plików.
Chcę downvote to tak źle. Dlaczego mieliby usunąć taką funkcję?!?!?! –
@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 –
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
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.
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
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
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))
;
});
});`
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
obowiązuje również w 2013 roku! –