Reputation: 14953
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
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
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
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