Exclude projects from Azure build pipeline

Viewed 8286

I have a solution which I have a number of unloaded projects. When I build the solution locally the unloaded projects are obviously not built. In Configuration Manager, I can't even select configuration, platform, build and deploy options for the unloaded projects.

Now I have created an Azure Pipeline which also builds the solution. But the unloaded projects are still being built.

How can I exclude building projects in my pipeline?

1 Answers

Now I have created an Azure Pipeline which also builds the solution. But the unloaded projects are still being built.

Both Azure Devops Pipeline and VS IDE would call msbuild.exe to build. When building a solution using msbuild, it actually is running command msbuild xx.sln /t:build ....

Check the content of xx.sln file (solution file) we can find it defines definitions about the projects within the solution. That's why if you build the solution, all these projects will be built. This is expected behavior when building whole solution. Sample .sln file:

enter image description here

And it's VS IDE's magic to exclude unloaded projects when building whole solution. The IDE will check the unloaded projects and skip them when building whole solution, it has advantage that the unloading project behavior in IDE won't modify your solution file. (It's important for solution under Git version control).

To sum up: It's expected that building solution will build all projects. When we unload the projects in VS, this action won't affect our source solution file or project file. VS will automatically skip the unloaded projects, which is the unique feature of IDE. (Unload is a UI action in VS, it has no effect on .sln/.xxproj file)

To exclude projects to build in Azure Devops:

1.Specify projects to build when building whole solution. (It doesn't change any file, so that it won't affect Version control)

You can check this answer and corresponding document. My devops task setting (no need to specify Build target):

enter image description here

2.Exclude projects from solution configuration (Not recommended) or create a new configuration that excludes specific projects (Recommended). The solution configuration is defined in solution file (sln), so this way would makes effect on Source control.

Exclude projects from solution configuration(Not recommended):

enter image description here

Create a new configuration that excludes specific projects:

enter image description here

enter image description here

Related document here. I suggest you can do the changes via VS IDE, and then push the commits to remote repo. It's complex if you're not familiar with msbuild and sln file, so I doesn't suggest doing that yourself. Let IDE do the job for you.

Once the remote repo get the changes:

enter image description here

We can build the solution in devops with customrelease configuration which excludes ProjectA and ProjectB instead of release configuration which contains all projects.

enter image description here

All these workarounds had been tested on my side before posting them.

Related