VS2010: Exclude a project from build - visual-studio-2010

I have a solution that has a wcf service that connects to SQl server. When I am offline I have another service that I use for development and testing that stores to in memory storage. I would like to exclude the test service from my Team build as I do not wish to deploy this to the customer etc. How do I do this?

In VS2010, select Build | Configuration Manager .... In the Configuration Manager dialog, select in the active configuration list. Enter a name (eg. TeamBuild) and select to copy from Release. Click OK.
Now make sure that only projects are checked that you want to have build a scheduled team build (exclude your test service). Click OK, save you solution and check it in.
In your Team build definition, under Build process, select the solution you just have saved and under the Configuration tab, select the TeamBuild configuration. Now, only the projects that you have selected are build.

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.

Automatically place drop in source control folder - VSO Build

I am building my solution in Visual Studio Online Build, the default 'steps' are build/test/index+publish/publish build artifacts. I want the build to be placed in a folder in my source control (rootfolder/builds). However, I don't see an option to enter an output-path anywhere.
EDIT: I see that next to 'timeline' on the build screen there is the option to view the 'Artifacts', but, I want to see/copy the drop to my TFS online project folder like '$myproject/mybranch/builds/'
The option to store the build drop on the TFS server is no longer supported. It was introduced as a temporary measure in 2012 and replaced with server drops in 2013.
Server drops are stored in an unversioned store in TFS/VSO and does not incur the overhead of versioning.
In TFS 2015 this transitioned to the new Artifacts repository. All build output is stored on the server and is accessible in the web, and through an API.
The way things stand right now, this is not possible. You have two options to drop your build outputs
Team Foundation Server
UNC file share if you use a on-prem agent.
See the Artifact Type argument on Publish build artifacts.
I it is possible with a custom powershell task. I have recently created a powershell build task that could "check-in" your drop artifacts into a folder like $myproject/mybranch/builds.
Have a look : https://github.com/skuvnar/visual-studio-team-services-scripts.
Although its possible, I would suggest against it - could lead to all sorts of trouble with the builds.

Exclude projects from solution during build in MSBuild on a CI server

I am working on a solution in Visual Studio that contains a number of projects:
Solution.sln:
-> ProjectInc1.csproj
-> ProjectInc2.csproj
-> ProjectExc1.csproj
-> ProjectExc1.csproj
I work on all projects and when I make a push on my VCS (Github in my case) it triggers a build configuration on a CI server (TeamCity in my case). TeamCity server uses MSBuild, that takes the Solution.sln as parameter and builds it. However I want certain projects (e.g. ProjectExc1.csproj, ProjectExc2.csproj) to be ignored from build. I can do this step if I remove the project references from Solution.sln file, but I think there must be a better way to exclude from build certain project.
Does anyone know how to configure MSBuild or the Solution itself to ignore these projects when building the solution on the CI Server?
In Visual Studio create a new build configuration (from http://msdn.microsoft.com/en-us/library/jj676765.aspx):
To create a solution configuration that excludes a project
On the menu bar, choose Build, Configuration Manager.
In the Active solution configuration list, choose .
In the Name box, enter a name for the solution configuration.
In the Copy settings from list, choose the solution configuration on which you want to base the new configuration (for example, Debug),
and then choose the OK button.
In the Configuration Manager dialog box, clear the check box in the Build column for the project that you want to exclude, and then
choose the Close button.
On the Standard toolbar, verify that the new solution configuration is the active configuration in the Solution
Configurations box.
On the menu bar, choose Build, Rebuild Solution.
Then in TeamCity, instead of building in Debug/Release set the configuration to build with your new build configuration name.
If you are calling from an MsBuild script, the same applies. Just change the configuration you are calling.

In Visual Studio 2010, how do I stop new projects being added & built in every existing build configuration

I have a number of configurations setup in Visual Studio with a carefully crafted list of projects that each one should build.
When I create a new project in the solution it gets selected for building automatically in every existing build configuration.
Is there an option to stop this occurring?
In the solution configuration manager you can unselect build (and deploy) of individual projects for different build configurations.
Right click on solution, select properties, Configuration Properties.
Or Build | Configuration Manager

Web Deployment Projects, Web Application Projects and Team Build 2008

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.

Resources