Visual Studio 2010 - WDP or Publish for automated deployment? - asp.net

I'm about to upgrade to Visual Studio 2010, and I'm learning that there are now a few options for deploying web application projects. I've been using Web Deployment Projects in 2008, and my initial thought was to do the same in 2010.
Is there any advantage to using Publish or the Web Deployment Tool over Web Deployment Projects?
I need to automate the process so that the build and the deployment can be run from TeamCity. I'd prefer a method that would allow me to use the Visual Studio (sln) Runner but a custom MSBuild script would be OK too. See Web Application Deployment Workflow with SVN and TeamCity for more information on my current build/deployment workflow.

They both accomplish the same end goal, but they work very differently. In the end I used the new Web Deployment Tool. I chose it for the following reasons:
I can build my solution without installing any add-ins and with VS 2010 Express. MSDeploy is executed on my build server from an MSBuild script
MSDeploy seems to be the preferred method.
Web.config transformations are more flexible than WDP web.config section replacements. Only certain config sections could be replaced with WDP, but transformations are simply XML transformations that can apply to anything.

Related

How to package and deploy asp.net web application

I am currently working on automating the build and deploy of an asp.net web application which is developed using vb.net in visual studio. Currently, developers are building the solution and projects using visual studio IDE. In the solution, they have deployment/setup projects (vdproj) for each environment (e.g.: app.setup.dev, app.setup.uat, app.setup.prof) which creates msi for the deployment and the web.config is embedded on it.
We are using github for scm, jenkinsfor build/CI and udeploy for deployment.
I am able to build the solution using msbuild cli thru jenkins. However, vdproj cannot be built using msbuild. Alternatively, I installed Visual Studio and MS VS Installer Projects Extensions in my build server, then build the vdproj using devenv. I am not sure if that is a correct way, maybe it is just a workaround.
What is the appropriate way to package the deployment artifacts (contents files, dlls, web.config) and deploy them? And How? If there’s another way to do it rather than creating MSI, it would be great as I don’t have to get a license for the Visual Studio in my build server.
I am currently working on automating the build and deploy of an
asp.net web application which is developed using vb.net in visual
studio.
Maybe you can try publish asp.net web-app by msbuild command-line.
1.As far as I know, we can build and deploy by Visual Studio, see this document.
2.And without VS, you can build and deploy(publish?) by msbuild command-line, there are many resources about this topic.
See:
How to deploy an ASP.NET MVC application on build using MSBuild in Visual Studio 2015?.
How to build and deploy a web deployment package using MSBuild
Using MSBuild.exe to “Publish” a ASP.NET MVC 4 project with the cmd line
In this way, you can get similar function by specifying the parameters and don't need to have VS installed in the server.
What is the appropriate way to package the deployment artifacts
(contents files, dlls, web.config) and deploy them?
Do you have to package them into .msi or .zip and then publish it. If not, simple msbuild command like: msbuild xxx.sln /p:WebPublishMethod=xxx /p:PublishProfile=xxx is enough.
Not certainly sure if it's what you want, hope it helps.

How to run ASP.NET MVC app using MSBuild command line

How do I compile and run an ASP.NET MVC app using nothing other than the MSBuild command line? My Visual Studio is super slow and I just want to be able to run an app quickly for bugfixes and showcasing etc. Is this possible? What's the command line for it?
MSBuild is for building your application. If you want to run your app outside of Visual Studio, you need a web server for it. I'd recommend you to publish your app on local IIS. Just point your IIS website to your Web project folder. After that you will be able to access your application from the browser without running it from Visual Studio.
You can build your project from command line. Use msbuild.exe utility for it:
msbuild.exe projectname
You can find it in one of your .NET Framework folders (I recommend you to use the latest one):
C:\Windows\Microsoft.Net\Framework\v2.0.50727\MSBuild.exe
C:\Windows\Microsoft.Net\Framework\v3.5\MSBuild.exe
C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe
C:\Windows\Microsoft.Net\Framework64\v2.0.50727\MSBuild.exe
C:\Windows\Microsoft.Net\Framework64\v3.5\MSBuild.exe
C:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe
When IIS is set up, you can build your app and see changes in your browser. Visual Studio is not necessary at this point.
Instead of IIS you can use IIS Express. Here is an article of how to run application on IIS Express from command line.

Changes in dll on converting web application from vs 2008 to 2012

I want to use an ASP.NET web application which was built using visual studio 2008 to 2013. will keep the .net framework to 3.5.
My concern is: There will be changes to .csproj and .sln after opening the project in 2013 but what about the dll to be deployed. would i need to update the hosting environment to 4.0 or any dependency upgrade?
The csproj and sln files will indeed be upgraded, but that has no bearing on the output of compilation.
As long as you continue to build for .NET 3.5, there shouldn't be any additional requirements to deploy your application. One thing to keep in mind is that VS2008 web deploy projects and database projects have been deprecated, and no upgrade path for those exists. So be careful if you're using either of those.
The safest approach for you will be to test the upgrade. Install VS2013, which runs side-by-side with VS2008. Open up the old solution, let VS update it, then do a test deployment. If there's a problem, just revert the change to whatever your last source controlled version is.

Can I use Web Config Transform when publishing to azure with Visual Studio 2012?

I have three enviroments for my asp .Net mvc application Local, Development and production. This means i need three webconfig files. The transformation seems to work fine with local and development deployment through a build server but not when deploying to production. It works when i manually publish the site from visual studio 2012.
Does it have something to do with the servicConfigurations for the different enviroments?
If you're going to Azure, then you can use publishing profiles. The trick is to chain your config files with your environment settings in Visual Studio.
There's an overview of publishing profiles here:
http://msdn.microsoft.com/en-us/library/ff398069.aspx
And Scott Hanselman walks through a number of scenarios with chained config files here:
http://www.hanselman.com/blog/TinyHappyFeatures3PublishingImprovementsChainedConfigTransformsAndDeployingASPNETAppsFromTheCommandLine.aspx
With those two pieces, there is enough info there to not only manually get the configs transforming, but also to work those into CI.
Hope this helps, cheers.

Web Deployment Projects - Remote IIS Server

Background
In the spirit of continuous integration, I'm trying to automate our deployment process using a Web Deployment Project. Mostly, this has been painless. Most options were baked in and those that weren't were easy to add through the MSBuild XML interface.
However, I cannot seem to find an option for deploying to a remote IIS Server. This seems strange to me because I obviously don't want all my builds to run on my production/staging server.
The Question
How can I set up my Web Deployment project to create/overwrite an IIS Virtual Directory on a remote machine?
Notes
I am using Visual Studio 2008 and .net 3.0.
[Edit]
As suggested by x0n below, I could use MS Deploy for this. I would rather use a Web Deployment Project though, especially since we already have those set up. :)
Your best bet is to take a look at MS Deploy which is available as a stand-alone package right now at RC level. It ships with a Go-Live license, which means it will be compatible with the version shipping with Visual Studio 2010. Some info:
http://blogs.iis.net/msdeploy/default.aspx
It's a great tool - will sync remote servers, farms etc picking up missing metabase info, com objects, registry, .net components in bin or gac, databases - the whole hog. It also ships with an interactive shell and powershell cmdlets.
-Oisin

Resources