简体   繁体   English

Visual Studio 2012部分发布

[英]Visual Studio 2012 partial publish

when i publish my ASP.NET (webforms) website with Visual Studio 2012 always all files are uploaded. 当我使用Visual Studio 2012发布我的ASP.NET(webforms)网站时,总是会上传所有文件。 Even Images? 甚至图像?

Is there a way to only publish changed files? 有没有办法只发布更改的文件?

For the record, the "only publish changed files" check-box that was in VS2012's Publish profile has been removed from VS2012's Publish profile. 为了记录,VS2012的发布配置文件中的“仅发布已更改文件”复选框已从VS2012的发布配置文件中删除。 One step forward, two steps back. 前进一步,后退两步。

No, the Publish Wizard in Visual Studio does not offer this. 不,Visual Studio中的发布向导不提供此功能。

A suggestion is to publish locally and only update the changed files manually. 建议是在本地发布,仅手动更新已更改的文件。

Use node->npm->gulp watch to track them. 使用node-> npm-> gulp watch来跟踪它们。 This way it uploads only when a file is changed, and you need not track the changeset at all. 这样它只在文件更改时上传,而您根本不需要跟踪变更集。 We should all be using gulp these days anyway. 无论如何,我们这些天都应该使用gulp。

Having to manually manage all the assets individually, or be forced to upload the entire published package, is just crazy. 必须单独手动管理所有资产,或者被迫上传整个已发布的软件包,这简直太疯狂了。 I for one can't believe visual studio, even the newest 2015 edition, doesn't have something better. 我无法相信视觉工作室,即使是最新的2015版本,也没有更好的东西。 Pretty sad really. 真的很伤心。

Here's my gulp script, which was sourced from (I just cleaned it up really): 这是我的gulp脚本,源自(我刚刚清理过它):

` `

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM