Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OutputPath vs OutDir #87

Closed
StevenLiekens opened this Issue May 4, 2015 · 6 comments

Comments

Projects
None yet
6 participants
@StevenLiekens
Copy link

StevenLiekens commented May 4, 2015

I'm pulling my hair out trying to get Visual Studio and MSBuild to agree on where build output should be stored, using any combination of OutputPath and OutDir that I could come up with.

Edit: turns out that there is a third property that controls the build output: WebProjectOutputDir.

I realize that this is not a help forum. I briefly considered asking a question about it on StackOverflow, but 72 others have done so before me, leaving empty-handed most of the time.

There is a huge number of scenarios that require relocating the build output, but there is no reliable way to do that. For example: IIS Express stops working when you change the OutputPath of a web application project (could you believe it?).

Someone even got mad enough over OutputPath and OutDir to write a blog post about it: I hate you, OutDir parameter

Please explain how OutputPath and OutDir were intended to be used, in the context of continuous integration builds.

@AndyGerlicher

This comment has been minimized.

Copy link
Member

AndyGerlicher commented May 12, 2015

Team triage: We also agree that this is unfortunate, but we need to be conservative on this because of legacy issues. This is not something we plan to address at this time.

@rainersigwald

This comment has been minimized.

Copy link
Contributor

rainersigwald commented May 13, 2015

To expand on what @AndyGerlicher said, we can't do what you're asking because we too have lost the reasoning behind this decision. The current team thinks it looks pretty broken.

From comments in the targets

OutDir and OutputPath are distinguished for legacy reasons, and OutDir should be used if at all possible.

It seems like we got stuck in the middle of a transition. However, as you've discovered, there's a ton of MSBuild code out there that exploits the differences between the two variables. That keeps us from completing the transition (or for that matter backing it out), because it would cause a lot of churn in customer projects.

@StevenLiekens

This comment has been minimized.

Copy link
Author

StevenLiekens commented May 13, 2015

Thanks for taking time to look at this. I really appreciate it.

The way that seems to work best is to keep the OutputPath that is generated by Visual Studio, then set the OutDir as a command argument.

@michael-freidgeim-webjet

This comment has been minimized.

Copy link

michael-freidgeim-webjet commented Jan 22, 2017

I found that for Asp.Net Core only OutputPath parameter is working, and in mixed .net 4.61/Core solutions OutDir command argument should be avoided. See my post OutDir vs OutputPath for Visual studio 2015 and Asp.Net Core

@JunielKatarn

This comment has been minimized.

Copy link
Contributor

JunielKatarn commented Mar 17, 2017

OutDir and OutputPath are distinguished for legacy reasons, and OutDir should be used if at all possible.

@rainersigwald Sorry, I didn't really get it. Which one should I use (new project, no legacy dependencies).

@arivoir

This comment has been minimized.

Copy link

arivoir commented Oct 16, 2017

<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> Worked for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.