question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Too many defaults that are opt-out, and they are different from what MSbuild and the .NET Core SDK chose as defaults

See original GitHub issue

Aspnet has a defined set of properties which are different from the default values in Arcade so they had to put workarounds. i.e.

Full list of properties they had to work around were:

  • Xliff tasks for resx generation.
  • DebugType == embedded
  • Strong name key == MicrosoftShared
  • Test framework == xunit 2.4.1-pre.build.4059. (We were on 2.3 and there are breaking changes between 2.3 and 2.4)
  • Using ref assemblies from a NuGet package for .NET Framework projects (Microsoft.NETFramework.ReferenceAssemblies). This breaks some ASP.NET scenarios
  • MSBuild warnings as errors. Sometimes warnings are inevitable and we don’t have a way to fix the warnings.
  • Projects, by default, do not produce packages when calling dotnet pack. (This is the opposite default that Microsoft.NET.Sdk chose.)
  • Any project named “Tests” gets automatic references to xunit. We have some tests that use NUnit.
  • The obj/ and bin/ folders are moved to the repo root. (I actually like this but…) it’s not the default MSBuild chose, and we rely on some tools which don’t work unless bin/ and obj/ are in the default MSbuild location.

Is the idea for customers to have these types of workarounds in place defining the values of the properties or we should have a better overriding story in place?

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:27 (27 by maintainers)

github_iconTop GitHub Comments

3reactions
nguerreracommented, Jan 30, 2019

Moving between different infrastructure is always hard.

Arcade being opinionated is a big part of its appeal to me. There are a number of things that are requirements for our infrastructure that don’t apply to file -> new project. I don’t think we can make it a requirement that all default behaviors are the same between those. I think having certain important things done for me by default if I follow opinionated conventions is a good approach. Historically, when we have relied on each team to do it their own way, we have duplicated effort at best and had gaps in which parts of the stack were meeting certain requirements at worst. We finally have things like source linking and symbol publishing just working without having to maintain it ourselves.

I get that if you already built the equivalent with a different approach, then migrating is hard. The dividends will still come in the future when we can share improvements across more teams with less duplicated effort.

2reactions
nguerreracommented, Feb 5, 2019

For any default we decide to revert, we need a plan to roll out without breaking everyone. Silently stopping localization for example could go unnoticed. I’m not against that default being the other way (also just an example), we just have to be prepared to go through and opt everyone who needs it back in.

Read more comments on GitHub >

github_iconTop Results From Across the Web

MSBuild reference for .NET SDK projects
The PublishRelease property informs dotnet publish to use the Release configuration by default instead of the Debug configuration. This property ...
Read more >
Incompatible versions of Mono MSBuild and .NET Core ...
NET Core SDK are incompatible on Linux and macOS. If you use such combinations, it will be impossible to build your project in...
Read more >
The SDK 'Microsoft.NET.Sdk' specified could not be found - ...
I encountered this error after playing around with .Net Core 2.0 installation and seemingly messing it up. I would get this same error...
Read more >
dotnet publish should default to release mode · Issue #10357
It would mean that dotnet publish and msbuild /t:Publish are different, though. Solving the compat worries in one fell swoop!. Also I hear ......
Read more >
Implicit Using Statements In .NET 6 - NET Core Tutorials
So again, it's somewhat opt in, it's just that you will be opted in by default when creating a new project. When enabled,...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found