Web Deployment Projects, Web Application Projects and Team Build 2008 - visual-studio

I've switched from a Website Project to a WAP (Web Application project).
The WDP (Web Deployment Project) is used to set and potentially in the future make other web.config changes.
However I notice that the team build is building everything twice, once on behalf of the solution file and then again because of the WDP. Any idea how I can stop this from happening?
Or is there a way to replace out the web deployment project altogether?

Yes and yes.
You can stop TFS Build from building everything twice by following these steps:
Open the configuration manager (open your solution and select Configuration Manager from the top-level Build menu).
Expand the drop down list for Active solution configuration and select New.
Enter a name for your new solution configuration and select an existing configuration to copy settings from and click OK.
In the Configuration Manager, uncheck the checkboxes in the Build column for all of the projects except the deployment project and click Close.
Edit your TFSBuild.proj file's ConfigurationToBuild ItemGroup by adding your new configuration:
Foo
Any CPU
Where Foo is the name of the new configuration you just defined.
For Visual Studio 2010, the ASP.NET team has partnered with the IIS team to deliver an integrated web application packaging and deployment solution built on the [Web Deployment Tool][1]. It more or less replaces web deployment projects and you can use it with VS/TFS 2008 via its [command line interface][2]. I have a blog post covering the basic scenario here:
Building a Simple Web Site with VSTS/TFS 2008.

Related

Build not publishing Web API project in Visual Studio Team Services (was VS Online)

I have created a VS build definition on Team Services. The build runs successfully when I queue it and it also outputs the dlls for all the projects in the solution except the service layer which I have created using Web Api2.
when I download the artifacts from the drop location, I have folders holding the dlls for the data layer, the business layer and other helper projects. What I don't have is the main service layer dll which I can deploy to my IIS.
Here is a screenshot of my publish settings.
What could I be missing ?
It seems that you are using the default settings for the build definition. With these settings, the contents for "Copy Files" task is "**\bin\$(BuildConfiguration)**" while web api project does not have buildconfiguration folder. So it cannot find the files for web api project. To copy these files, add one more "Copy Files" task and configure the settings as following:
If you want the deployment files for the project, you need to set you build definition as following:
Add arguments /p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)" for Visual Studio Build step.
Remove Copy Files step.
Set Path to Publish to $(build.artifactstagingdirectory)\\_PublishedWebsites for Publish Build Artifacts step.
Then you should get the deployment files in the drop folder.
Open the Configuration Manager in VisualStudio and ensure the WebAPI project is included for the configuration (Debug, Release, etc) that you are building.

Deploying to FTP/Web Deploy In Visual Studio 2015

I cannot figure out a way to publish a web project in Visual Studio 2015 CTP using web deploy or FTP. In the Publish wizard, there are only options for Azure, Import and File System. In Visual Studio 2013, there is a Custom option where you can specify the connection settings and choose between Web Deploy, Web Deploy Package, FTP and Filesystem.
I tried moving over the publish profile from my Visual Studio 2013 project by putting it in the Properties-->PublishProfiles folder, and then it behaved like Visual Studio 2013, but would not publish (failed to connect to remote host) with the same settings that publish fine in 2013.
Any ideas?
It sounds like Web Deploy 3.6 beta supports the new content models in ASP.NET 5 (ASP.NET vNext) and I guess that the VS 2015 Web-Deploy client doesn't support it yet. (28 April 2015)
This blog post gives some command-line options for using a publish profile. I'm in a new environment that isn't set up for web-deploy yet, so I haven't tried it myself. (I did a file-system publish to test against my local IIS.)
I also experienced the same issue. It seems that, at the time of writing, the FTP publish target isn’t available yet: I guess that’s most likely because the Web Development Tools are still in release candidate / preview phase, so the GUI still has some missing features.
Luckily enough the issue can be easily solved with the following workaround.
If you don't see the FTP option, choose File System instead and go ahead. When prompted for a Target Location, insert the FTP Server URL and go ahead.
The remaining steps won’t change, so you can complete the wizard that will be saved into a ProfileName.pubxml file.
Once done, open that file and apply the following changes:
Locate the <WebPublishMethod> element and change its value from FileSystem to FTP.
Locate the <UsePowerShell> element and entirely remove it.
Right after doing that, right-click to the project’s root node, select Publish and re-open your Publish Profile via the Publish Profile Wizard in edit mode: all the FTP options (Server, Site Path, Passive Mode, Username, Password) will now be available.

Web Package gets wrong IIS Website name

I'm trying to utilise TFS Team Build to deploy web applications from a solution as part of the build process, however I'm having a problem with the IIS website name when using package .zip and cmd files.
In the web application project settings "Package/Publish Web" tab I can set the IIS website name (eg "mobile") and when the project is built using the MSBuild action from the workflow the resulting .zip and .xml files are created correctly. However, upon opening the SetParamters.xml file, the IIS Web Application Name parameter has an old value, something like "Default website/mobile_deploy".
If I build a package directly from within Visual Studio 2010 the SetParameters.xml has the IIS Web Application Name I set in the project file settings.
The build template is set to clear the workspace on each build and I've confirmed this by watching the binaries folder being cleared on the build agent during the build so I'm certain its not the value hasn't been overwritten.
Any suggestions to get the project's IIS Web Application Name pulled through properly?
Maybe, when you build your project through MSBuild you don't set the same Configuration in which you have changed the IIS Web Site/application name through Package/Publish Web settings on Visual Studio 2010.
The deploy path can be different for each Project Configuration. Perhaps you set the Debug value while TFS is using Release?

Why Visual Studio 2010 publish website with source code?

I'm using Visual Studio 2010 with the new website publish dialog. I have a Web Application website. When published, in theory it should compile all the code into an single assembly. However, in both Debug and Release, after publishing the directory always contains source code of page and user controls (even with the untransformed web.config files Web.Debug.config and Web.Release.Config). This is very confusing.
But with package/publish web project configuration and Generate Deploy package context menu item, the Package\PackageTmp directory is clean.
Why doesn't Visual Studio use this Package to publish the website?
Where is the precompile option?
Web.config xml transform seems not work, why does Visual Studio bring this feature to confuse me?
The correct answer is to look in the Package/Publish Web settings (in the web application project properties) and look for the "Items to deploy".
For a web application you'd want "Items to deploy" to have "Only files needed to run this application" which would NOT copy the source code files, since they've been compiled into the DLL in the bin folder.
Note that this setting varies for your current Build type (Debug/Release/etc), so plan accordingly...
Ciao!
You need to understand the differences between Web Application Projects versus Web Site Projects.
To deploy a Web application project, you copy the assembly that is
created by compiling the project to an IIS server. In contrast, to
deploy a Web site project, you typically copy the project source files
to an IIS server.
For Web application projects, you typically build the project in
Visual Studio or by using the ASP.NET batch compiler on a computer
that is not the production IIS server. All code-behind class files and
standalone class files in the project are compiled into a single
assembly, which is then put in the Web application project's Bin
folder. (The .aspx and .ascx files are compiled dynamically in a
manner similar to what is done for Web site projects.)
For Web site projects, you do not have to manually compile the
project. Web site projects are typically compiled dynamically by
ASP.NET (on both the development computer and the production IIS
server). You can choose between batch compilation mode, which
typically produces one assembly per folder, and fixed compilation
mode, which typically produces one assembly for each page or user
control.
In visual studio 2013/2015, select an option "Precompile during publishing"

Sharing VS 2010 One-Click Web Publishing Settings

Anybody know where the VS 2010 One-Click Web Publishing settings are stored?
It would be awesome it a team could share the settings so a quick deployment to a test system is always a button click away.
It's stored in the same project directory as the project you've deployed, stored as an XML file. Look for a *.Publish.xml

Resources