I'm Not Out of Order, TDS Isn't Out of Order, This Whole …. Solution Is Out of Order! Why Your Builds Are Not Deploying Without Errors.

I had a real tricky issue this week as my newly built assemblies weren't being deployed to a dev environment. There were no errors. No warnings. There was even a message in the build output that the files I needed were in fact sent, but nothing showed up. Well, it all came down to a pesky developer playing around with the solution's configuration.


The Problem

In a Helix solution there's obviously a lot of projects, and in this case my Integrations assembly (Sitecore.Foundation.Integrations.dll) wasn't being updated. I can see the old one, so what's the deal? Something must have changed along the way as we've had this site in maintenance mode/post go-live for a while.

After deleting the destination file and trying again, I look at the output from Visual Studio to check for any errors on that end, but nothing is out of order. 

SourceWebOutputFolder: src\Foundation\Integrations\Sitecore.Foundation.Integrations\bin\Dev\  
Looking for: src\Foundation\Integrations\Sitecore.Foundation.Integrations.Master\bin\Dev\\**\*.*

 If you're wondering about the path, we have Dev, Release and PR Build (automated testing) in this solution.


Looking at TDS, you can see the Dev configuration is set to deploy to the developer's local instance of Sitecore:


So, it appears that TDS is looking in the right directory for this integrations project.


The Clue

Really the next thing I could do was observe the build output of the integrations project to see what was going on, since everything up to this point looked correct. When I explore this project, what do I see? There's nothing in bin\dev\, but I do see a Debug folder with my files!



The Solution

Now it's clear to me, knowing the history of this solution, what went wrong. Not too long ago a team member incorrectly added another project to the solution, causing the Debug configuration to be introduced. I rejected the pull request and gave notes, but must have not seen the misconfiguration the next time around:



You can edit the name of the configuration here:



But I chose to unload the project and edit the csproj file directly, so I can check if there's anything else out of order. It turns out just naming the configuration to match what TDS is using will correct the problem. Just change the following line:


<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">


<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Dev|AnyCPU' ">


Once reloaded, you can run a rebuild on the master project for this one, and the files are now deploying properly.