Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to invoke MSBuild via command prompt?

Tags:

I have a website (not a web application) and I want to publish it from the command prompt in the same directory every night.

I don't want to use build automation tools like TeamCity, TFS, or third-party tools like Nant - it should be done with MSBuild. How can I do this?

Update: in the Publish window the only option that should be checked is Use Fixed naming and single page assemblies.

like image 480
Nasser Hadjloo Avatar asked May 02 '11 08:05

Nasser Hadjloo


People also ask

What is MSBuild command?

Builds the targets in the project file that you specify. If you don't specify a project file, MSBuild searches the current working directory for a file name extension that ends in proj and uses that file. You can also specify a Visual Studio solution file for this argument.

What is the path to MSBuild?

For example, the path to MSBuild.exe installed with Visual Studio 2019 Community is C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe You can also use the following PowerShell module to locate MSBuild: vssetup.

Does dotnet CLI use MSBuild?

Description. The dotnet msbuild command allows access to a fully functional MSBuild. The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style projects only. The options are all the same.


1 Answers

From your comment, your web project is a web site project and not a web application project.

In this case, 'Publish' target can not be the option but 'AspNetCompiler' is the solution.

Create an xml file with below content and call it from MSBuild.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">     <Target Name="PrecompileWeb">         <AspNetCompiler             VirtualPath="/MyWebSite"             PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"             TargetPath="c:\precompiledweb\MyWebSite\"             Force="true"             Debug="true"             FixedNames="True"         />     </Target> </Project> 

Reference to this task is here and you can configure all your un/check options.

FixedName="True" equals the checking of 'use fixed naming and single page...' option.

Then you call this file from MSBuild instead of the solution file.

MSBuild your.xml /p:Configuration=<Debug/Release> 

As long as your class libraries are referenced by your web site project, they'll be built together.

like image 113
somatic rev Avatar answered Oct 14 '22 21:10

somatic rev