msbuild wrapper
npm install msbuild
npm install msbuild
`
With bower do:
`
bower install msbuild
`
Override build path
`
msbuild.msbuildPath = 'c:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\msbuild.exe'
`
Override build path using using environment variable
`
name: MsbuildPath
value:
`
`
Example for VS 2022
name: MsbuildPath
value: C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
`
Examples
nodejs-msbuild-examples
$3
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.build();
`
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.config('version','17.0')
msbuild.build();
`
$3
*note: sourcePath .csproj
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.csproj';
msbuild.overrideParams.push('/P:User=myusername');
msbuild.overrideParams.push('/P:Password=myp@assword');
msbuild.publish();
`
$3
*note: sourcePath .csproj
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.csproj';
msbuild.package();
`
$3
If you wish to log to file override "msbuild.logger". See example below.
` js
var fs = require('fs');
var util = require('util');
var log_file = fs.createWriteStream(__dirname + '/log.txt', {flags : 'w'});
var log_stdout = process.stdout;
msbuild.logger = function(d) { //
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
};
`
$3
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild(function(){});
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.configuration='Release';
msbuild.publishProfile='Production_Environment';
var overrideParams = [];
overrideParams.push('/p:VisualStudioVersion=14.0');
overrideParams.push('/p:allowUntrustedCertificate=true');
overrideParams.push('/P:Password=myp@assword');
msbuild.config('overrideParams',overrideParams);
msbuild.publish();
`
'/p:VisualStudioVersion=14.0' sets version location C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0
'/tv:14.0' sets proj file targets
$3
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.overrideParams.push('/clp:ErrorsOnly');
msbuild.build();
`
$3
` js
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.configuration = 'your_app_configuration';
msbuild.publishProfile='your_app_publish_profile';
msbuild.exec = function(cmd,params,cb){
console.log('\nTEST 1: Preview MSBUILD Command');
console.log(' test - start **');
console.log(cmd);
console.log(params);
console.log(' test - end **\n');
}
msbuild.publish();
`
$3
` js
var your_callback = function(){
console.log('msbuild done. move on...');
}
var _msbuild = require('msbuild');
var msbuild = new _msbuild(your_callback);
msbuild.sourcePath = 'c:/your_app.sln';
msbuild.configuration = 'your_app_configuration';
msbuild.publishProfile='your_app_publish_profile';
msbuild.build();
`
$3
` js
var fs = require('fs');
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.logger = function(results){
fs.appendFile('test.txt', '\n' + results, function (err) {});
};
`
$3
` js
var fs = require('fs');
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.on('status',function(err,results){
fs.appendFile('test.txt', '\nRESULTS: ' + results, function (err) {});
});
msbuild.on('error',function(err,results){
fs.appendFile('test.txt', '\nERROR: ' + results, function (err) {});
});
msbuild.on('done',function(err,results){
fs.appendFile('test.txt', '\nDONE: ' + results, function (err) {});
});
`
additional configuration parameters
- os currently only support windows
- processor 'x86', 'x64'
- version tools version; determines local path to msbuild.exe
- sourcePath 'c:/mypath/mysolution.sln' or 'c:/mypath/myproject.csproj
- configuration solution configurations; targets an environment (debug,release)
- publishProfile publish profile; targets a specific machine (app01,app02)
- outputPath package deploy path
- overrideParams property overrides ['/p:WarningLevel=2','/p:OutputDir=bin\Debug','/tv:4.0']
Notes / Updates
$3
`
Changes include:
1. removed csproj and sln validation. not necessary.
2. fixed broken tests commented out in release "3.4.0"
3. moved examples into separate repo nodejs-msbuild-examples
`
$3
`
Changes include:
1. console.log extracted to allow extension
2. minor formatting - adjustment of line indentations
`
$3
$3
'12.0': '12.0',
'14.0': '14.0'
$3
$3
`
Changes include:
1. overrideParams validation has been corrected to support single character parameters
Example: "/m"
2. no longer requires "configuration"
3. no longer requires "publishProfile"
"sourcePath" is required if the "configuration" and "publishProfile" are not defined
`
FAQ
Error: ERROR_USER_UNAUTHORIZED
build script
`
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'C:/myproject.sln'
msbuild.publishProfile = 'myproject';
msbuild.configuration = 'release';
msbuild.publish();
`
error
`
"C:\myproject\myproject.csproj" (default target) (1) ->
(MSDeployPublish target) -> C:\Program Files (x86)\MSBuild
\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.
targets(4295,5): msdeploy error ERROR_USER_UNAUTHORIZED:
Web deployment task failed. (Connected to the remote
computer ("111.111.111.11") using the Web Management Service,
but could not authorize. Make sure that you are using the
correct user name and password, that the site you are
connecting to exists, and that the credentials represent a
user who has permissions to access the site. Learn more at:
http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_
UNAUTHORIZED.) [C:\myproject\myproject.csproj]
5 Warning(s)
1 Error(s)
`
$3
Add deployment credentials.
- Option 1: Add to publish profile (myproject.pubxml)
- Option 2: Pass into msbuild as a configuration parameter
(Option 1)
- Open "C:\myproject\Properties\PublishProfiles\" folder
- Open myproject.pubxml in notepad or notepad++
- Add "user_name "
- Add "user_pwd "
(Option 2)
- Modify your build script by adding "'/P:User=user_name'" and "'/P:Password=user_pwd'" overrideParams.
`
/ modified build script /
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'C:/myproject.sln'
msbuild.publishProfile = 'myproject';
msbuild.configuration = 'release';
msbuild.overrideParams.push('/P:User=user_name');
msbuild.overrideParams.push('/P:Password=user_pwd');
msbuild.publish();
`
Error: MSB8020
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\
$3
Include overrideParams(--msvs_version=2012) or update your csproj files
Error: MSB3073
$3
build script
`
var _msbuild = require('msbuild');
var msbuild = new _msbuild();
msbuild.sourcePath = 'C:/myproject/myproject.csproj'
msbuild.package();
`
error
`
"C:\myproject\myproject.csproj" (package target) (1) ->(
BuildPackage target) -> C:\.nuget\NuGet.targets(109,9):
error : The imported project "C:\Program Files
(x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
\Microsoft.WebApplication.targets" was not found.
Confirm that the path in the declaration is
correct,and that the file exists on disk. C:\myproject
\myproject.csproj [C:\myproject\myproject.csproj]
C:\.nuget\NuGet.targets(109,9): error MSB3073:The
command ""..\.nuget\NuGet.exe" pack "C:\myproject
\myproject.csproj" -Properties "Configuration=Debug;
Platform=AnyCPU" -NonInteractive -OutputDirectory
"C:\myproject\bin" -symbols" exited with code 1.
[C:\myproject\myproject.csproj] 7 Warning(s)
`
$3
Try removing from project configuration file "*.csproj". It can be found near the top nested under