Visual Studio 2017 MSBuild Setting
Publish Profile
xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AddGulpOutput">
<ItemGroup>
<_CustomFiles Include="lib\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>lib\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>..\..\PublishOutput</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<CopyAllFilesToSingleFolderForPackageDependsOn>AddGulpOutput;
;</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>AddGulpOutput;
;</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="BeforeBuild">
<Exec Command="npm install" />
<Exec Command="bower-installer" />
<Exec Command="gulp" />
</Target>
</Project>
bower.json
{
"name": "asp.net",
"private": true,
"dependencies": {
"air-datepicker": "v2.2.3",
"jsrender": "v0.9.90",
"TableDnD": "v1.0.3",
"font-awesome": "~4.6.3",
"bootstrap": "~3.3.7",
"bootstrap-social": "~4.8.0",
"flot": "~0.8.3",
"flot.tooltip": "~0.8.4",
"isomorphic-fetch": "^2.2.1",
"gentelella": "1.4.0",
"blockui": "v2.65",
"Jquery": "^1.12.4",
"printThis": "v1.12.3",
"jquery-ui": "1.12.1",
"echarts": "4.1.0.rc2",
"bootstrap-fileinput": "v4.4.8",
"blueimp-file-upload": "^9.21.0"
},
"resolutions": {
"font-awesome": "~4.6.3"
}
}
gulpfile.js
///
/*
This file is the main entry point for defining Gulp tasks and using Gulp plugins.
Click here to learn more. https://go.microsoft.com/fwlink/?LinkId=518007
*/
var gulp = require("gulp");//,
//fs = require("fs"),
//react = require('gulp-react'),
//babel = require('gulp-babel');
var paths = {};
paths['jquery'] = {
src: ['bower_components/jquery/dist/jquery.js',
'bower_components/jquery/dist/jquery.min.js',
'bower_components/jquery-validation/dist/jquery.validate.js',
'bower_components/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js',
'bower_components/jquery-cookie/jquery.cookie.js',
'bower_components/blockui/jquery.blockUI.js'],
dest: 'lib/jquery'
};
paths['bootstrap'] = {
src: ['bower_components/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map'],
dest: 'lib/bootstrap'
};
paths['gentelella_css'] = {
src: [
//NProgress
'bower_components/gentelella/vendors/nprogress/nprogress.css'
//iCheck
, 'bower_components/gentelella/vendors/iCheck/skins/flat/green*'
//Switch
, 'bower_components/gentelella/vendors/switchery/dist/switchery.min.css'
//bootstrap-progressbar
, 'bower_components/gentelella/vendors/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css'
//JQVMap
, 'bower_components/gentelella/vendors/jqvmap/dist/jqvmap.min.css'
//bootstrap-daterangepicker
, 'bower_components/gentelella/vendors/bootstrap-daterangepicker/daterangepicker.css'
//Custom Theme Style
, 'bower_components/gentelella/build/css/custom.min.css'
],
dest: 'lib/gentelella/css'
};
paths['gentelella_js'] = {
src: [
//FastClick
'bower_components/gentelella/vendors/fastclick/lib/fastclick.js'
//NProgress
, 'bower_components/gentelella/vendors/nprogress/nprogress.js'
//Chart.js
, 'bower_components/gentelella/vendors/Chart.js/dist/Chart.min.js'
//gauge.js
, 'bower_components/gentelella/vendors/gauge.js/dist/gauge.min.js'
//bootstrap-progressbar
, 'bower_components/gentelella/vendors/bootstrap-progressbar/bootstrap-progressbar.min.js'
//iCheck
, 'bower_components/gentelella/vendors/iCheck/icheck.min.js'
//Switch
, 'bower_components/gentelella/vendors/switchery/dist/switchery.min.js'
//Skycons
, 'bower_components/gentelella/vendors/skycons/skycons.js'
//Flot chart
, 'bower_components/gentelella/vendors/Flot/jquery.flot.js'
, 'bower_components/gentelella/vendors/Flot/jquery.flot.pie.js'
, 'bower_components/gentelella/vendors/Flot/jquery.flot.time.js'
, 'bower_components/gentelella/vendors/Flot/jquery.flot.stack.js'
, 'bower_components/gentelella/vendors/Flot/jquery.flot.resize.js'
//Flot plugins
, 'bower_components/gentelella/vendors/flot.orderbars/js/jquery.flot.orderBars.js'
, 'bower_components/gentelella/vendors/flot-spline/js/jquery.flot.spline.min.js'
, 'bower_components/gentelella/vendors/flot.curvedlines/curvedLines.js'
//DateJS
, 'bower_components/gentelella/vendors/DateJS/build/date.js'
//JQVMap
, 'bower_components/gentelella/vendors/jqvmap/dist/jquery.vmap.js'
, 'bower_components/gentelella/vendors/jqvmap/dist/maps/jquery.vmap.world.js'
, 'bower_components/gentelella/vendors/jqvmap/examples/js/jquery.vmap.sampledata.js'
//bootstrap-daterangepicker
, 'bower_components/gentelella/vendors/moment/min/moment-with-locales.min.js'
, 'bower_components/gentelella/vendors/bootstrap-daterangepicker/daterangepicker.js'
//Custom Theme Scripts
, 'bower_components/gentelella/build/js/custom.js'],
dest: 'lib/gentelella/js'
};
paths['flot'] = {
src: ['bower_components/flot.tooltip/js/*.js'],
dest: 'lib/flot-tooltip'
};
paths['font-awesome'] = {
src: ['bower_components/font-awesome/**/*', '!bower_components/font-awesome/*.json', '!bower_components/font-awesome/.*'],
dest: 'lib/font-awesome'
};
paths['js-polyfills'] = {
src: ['node_modules/js-polyfills/**/*.js'],
dest: 'lib/js-polyfills'
};
paths['air-datepicker'] = {
src: ['bower_components/air-datepicker/dist/js/datepicker.min.js'
, 'bower_components/air-datepicker/dist/js/i18n/datepicker.en.js'
, 'bower_components/air-datepicker/dist/css/datepicker.min.css'],
dest: 'lib/air-datepicker'
};
paths['TableDnD'] = {
src: ['bower_components/TableDnD/js/jquery.tablednd.js'],
dest: 'lib/TableDnD'
};
paths['jsrender'] = {
src: ['bower_components/jsrender/jsrender.js'],
dest: 'lib/jsrender'
};
paths['printThis'] = {
src: ['bower_components/printThis/printThis.js'
, 'bower_components/printThis/assets/css/*'],
dest: 'lib/printThis'
};
paths['jquery-ui'] = {
src: ['bower_components/jquery-ui/jquery-ui.js'
, 'bower_components/jquery-ui/themes/base/jquery-ui.css'],
dest: 'lib/jquery-ui'
};
paths['blueimp-file-upload'] = {
src: ['bower_components/blueimp-file-upload/**/*', '!bower_components/blueimp-file-upload/*.json', '!bower_components/blueimp-file-upload/.*'],
dest: 'lib/blueimp-file-upload'
};
paths['blueimp-load-image'] = {
src: ['bower_components/blueimp-load-image/js/load-image.all.min.js'],
dest: 'lib/blueimp-load-image'
};
paths['Ajax'] = {
src: ['Scripts/jquery.unobtrusive-ajax.js'],
dest: 'lib/Ajax'
};
paths['ckeditor'] = {
src: ['Scripts/ckeditor/**/*'
],
dest: 'lib/ckeditor'
};
paths['moment'] = {
src: ['Scripts/moment-with-locales.js'
, 'Scripts/moment-with-locales.min.js'
, 'Scripts/moment.js'
, 'Scripts/moment.min.js'
],
dest: 'lib/moment'
};
gulp.task("copy", function () {
for (var key in paths) {
var src = paths[key].src;
var dest = paths[key].dest;
gulp.src(src)
.pipe(gulp.dest(dest));
}
});
// Run everything
gulp.task('default', ['copy']);
package.json
{
"name": "f21.web.knowledge",
"version": "1.0.0",
"description": "",
"main": "index.js",
"directories": {
"lib": "lib"
},
"dependencies": {
"bower": "^1.8.2",
"create-react-class": "^15.6.3",
"es6-promise": "^4.2.2",
"gulp": "^3.9.1",
"gulp-install": "^1.1.0",
"isomorphic-fetch": "^2.2.1",
"js-polyfills": "^0.1.41"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"gulp-babel": "^7.0.1",
"gulp-bundle-assets": "^2.29.0",
"gulp-react": "^3.1.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Open System Properties > Advanced Tab > Environment Variables
Add following variable values on "PATH"
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin
And then execute following command
msbuild /p:DeployOnBuild=true /p:PublishProfile=YOUR_PUBLISH_PROFILENAME.pubxml /p:Configuration=Release /t:BeforeBuild;Build
if you see errors like following,
bower-installer -silent
'bower-installer' is not recognized as an internal or external command,
operable program or batch file.
then you should run command
npm install -g bower-installer
npm install -g gulp
댓글
댓글 쓰기