Aleksandar Vucetic
Aleksandar Vucetic

Reputation: 14953

Publish WCF Service (or ASP.NET Web Application) using command line

I would like to simulate "Publish..." menu item from WCF Service project (or ASP.NET Web Application or...) context menu in Visual Studio 2008. I do not have a need to publish it to a running IIS instance, just to put the web content together with bin folder on some local dir. Is there any way to add it in post build events, or as a MSBuild task?

Upvotes: 12

Views: 7603

Answers (3)

Aleksandar Vucetic
Aleksandar Vucetic

Reputation: 14953

Here is the answer, thanks to this link: http://codingcockerel.co.uk/2008/05/18/how-to-publish-a-web-site-with-msbuild/ So, I have just modified the .csproj file of web application, and wrote this into AfterBuild target (that was already there):

<Target Name="BeforeBuild">
    <Message Text="##############Before build##################" Importance="high"/>
    <RemoveDir Directories="publish"
        ContinueOnError="true"/>
</Target>
<Target Name="AfterBuild">
    <Message Text="##############After build##################$(OutputFolder)" Importance="high"/>
    <MSBuild Projects="$(ProjectName).csproj"
           Targets="ResolveReferences;_CopyWebApplication"
           Properties="WebProjectOutputDir=publish\;OutDir=publish\bin\" />
</Target>

Upvotes: 9

Sayed Ibrahim Hashimi
Sayed Ibrahim Hashimi

Reputation: 44342

HI, You should take a look at Web Deployment Projects. These are actually MSBuild files with Visual Studio GUI support. They will pre-compile your site. You can extend the behavior of these to copy the generated files to your web server.

Sayed Ibrahim Hashimi

My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

Upvotes: 0

mundeep
mundeep

Reputation: 2747

You should be able to write an xcopy command to copy the files you need to the right location. Microsoft has an article about xcopy deployment for asp.net.

Once you have the command right you can put it into the Post Build actions so it automatically fires after a build.

Also see VS Post Build Event for examples on copying just the dll output (note the use of $(TargetPath) & $(TargetDir)).

Upvotes: 0

Related Questions