tabs ↹ over ␣ ␣ ␣ spaces

by Jiří {x2} Činčura

Stopping MSBuild appending TargetFramework to OutputPath

Published 4 Apr 2017 in .NET Core, MSBuild, and Visual Studio

If you’re using the new csproj format maybe you noticed that the OutputPath has the last part automatically appended according to the framework you’re targeting. For example targeting netstandard1.6 would result in build results to be in bin\[Debug|Release]\netstandard1.6, for net462 it would be bin\[Debug|Release]\net462. But what if you don’t like this behavior? What if you want to specify the path exactly?

Well, I needed the same. Sadly the framework part was always appended no matter what I did. Setting OutputPath explicitly. Using BaseOutputPath. Even using absolute path instead of relative didn’t help. So it was time to try luck grep-ing through the *.targets files, because it’s for sure something there. And hopefully can be disabled. It needs to be something with TargetFramework variable around OutputPath. Few attempts later I found AppendTargetFrameworkToOutputPath, which looked very promising. Quick test setting it to false and bingo. That’s what I need.

Therefore, if you’re ever in need to have your OutputPath exactly as you specified it, the AppendTargetFrameworkToOutputPath set to false is your answer.