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

Private MSBuild backward compatibility #713

Closed
rainersigwald opened this issue Jun 21, 2016 · 3 comments
Closed

Private MSBuild backward compatibility #713

rainersigwald opened this issue Jun 21, 2016 · 3 comments
Labels
needs-design Requires discussion with the dev team before attempting a fix. triaged

Comments

@rainersigwald
Copy link
Member

rainersigwald commented Jun 21, 2016

Given a project that

  • Already exists
  • Uses full-framework tasks and targets
  • Targets building for the full framework

In a world where MSBuild isn't installed and potentially comes in mutiple flavors (desktop/full framework, .NET Core, Mono), what is required to build this project?

At the moment, .NET Core MSBuild can't build a project that targets the full framework. Reasons this isn't trivial:

  • Can't load tasks that aren't .NET Core compatible (this could be alleviated by .NET Framework TaskHost #711)
  • Can't use MSBuild functionality that's tied to the desktop CLR, like ResolveAssemblyReferences, binding redirects, and some toolset/helper things
  • A desire to make netcore MSBuild work the same everywhere--for example disallowing registry operations, even though they could work (on Windows)

At the same time, the dotnet CLI can currently build applications that target the full framework, and it would be good to preserve that behavior.

One possibility is to always use the full framework MSBuild on Windows--that code will handle building projects that target full framework (as it always has) and .NET Core (because there are no .NET Core-exclusive features of MSBuild).

@rainersigwald rainersigwald added the needs-design Requires discussion with the dev team before attempting a fix. label Jun 21, 2016
@cdmihai
Copy link
Contributor

cdmihai commented Jun 21, 2016

We could do a short term / long term thing.

Short term, due to VS release time constraints: the easiest thing (for MSBuild at least) is for dotnet CLI and VS to use the full framework MSBuild on Windows. This means they would both agree, and users would not get different builds from VS and command line (as long as CLI users match the msbuild command line to the configuration that VS does).

Long term, we could do work towards 1 build engine: beefing up .Net Core msbuild until it is good enough in terms of feature parity. Things like switching to Roslyn for inline tasks and converting many ifdefs to runtime checks.

@borgdylan
Copy link

Please preserve the use of the xbuild-frameworks folder that comes with mono, it provides the necessary framework lists to target full-framework/mono.

@rainersigwald
Copy link
Member Author

I'm not sure this makes sense any more, closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-design Requires discussion with the dev team before attempting a fix. triaged
Projects
None yet
Development

No branches or pull requests

4 participants