monoassembliesculturexbuildinvariantculture

Mono / XBuild Invariant Language (Invariant Culture) vs. VS2015 MSBuild's Neutral Language


I'm trying to resolve 2 discrepancies between the output of:

Both of these issues are detailed in this example repo here: https://github.com/DavidACL/SatelliteAssemblyCustomAttributesIssue/tree/master The project is a simple C# / .net 4.5 application demoing the issues (includes XBuild output).

The first issue, titled Mono Missing Satellite Assembly Custom Attributes and Version, I believe, is solved by the pending PR https://github.com/mono/mono/pull/3463, and is pointed out in this Compiler bug https://bugzilla.xamarin.com/show_bug.cgi?id=12671

However, I can't find any information on my second issue:

There appears to be a difference between MSBuild and XBuild output when the language property is viewed by right-clicking the .exe or .dll and viewing the details tab. There is a further difference if you have a satellite assembly.

MSBuild: As expected, main assemblies have detail-tab language (technically Block Header if the DLL / EXE is opened in Visual Studio and the values inspected) = Language Neutral.

Simialarly, the MSBuild de-DE satellite assembly .dll has detail-tab language = Language Neutral

Assembly:

enter image description here

Satellite Assembly:

enter image description here


Mono / XBuild: main assemblies have detail-tab language = Invariant Language (Invariant Country), and de-DE satellite assembly has detail-tab language = German (Germany)

Assembly:

enter image description here

Satellite Assembly:

enter image description here

While I understand that Mono may use Invariant Langauge in place of Neutral as a default, is there any way to reverse this to attain a match between MSBuild and XBuild (perhaps through a configuration step)? Is there a reason why MSBuild does NOT propagate the locale of the satellite assembly to the details tab's language field, while XBuild does? Again, can this difference be eliminated with any configuration step?


Solution

  • Don't expect intricate xbuild bugfixes anytime soon, as MSBuild from Microsoft has already been opensourced, and the Xamarin team has already done some work to make it crossplatform (e.g. it's already shipped inside Mono's installer for Mac).

    It's only a matter of time until debian developers (or contributors, like you?) package it (and xbuild becomes deprecated). In the meantime, you could build it yourself and try it out.