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

Posted

技术标签:

【中文标题】Mono / XBuild Invariant Language (Invariant Culture) vs. VS2015 MSBuild 的 Neutral Language【英文标题】:Mono / XBuild Invariant Language (Invariant Culture) vs. VS2015 MSBuild's Neutral Language 【发布时间】:2017-04-01 23:07:48 【问题描述】:

我正在尝试解决以下输出之间的 2 个差异:

Windows 8 / Visual Studio 2015 / MSBuild 和 Debian 8.2 / Mono 版本 4.6.2.0 / XBuild 引擎版本 14.0

这两个问题都在此示例回购中详细说明:https://github.com/DavidACL/SatelliteAssemblyCustomAttributesIssue/tree/master 该项目是一个简单的 C# / .net 4.5 应用程序,用于演示问题(包括 XBuild 输出)。

第一个问题,标题为 Mono Missing Satellite Assembly Custom Attributes and Version,我相信,已由待处理的 PR https://github.com/mono/mono/pull/3463 解决,并在此编译器错误 https://bugzilla.xamarin.com/show_bug.cgi?id=12671 中指出

但是,我找不到关于第二期的任何信息:

通过右键单击 .exe 或 .dll 并查看详细信息选项卡来查看语言属性时,MSBuild 和 XBuild 输出之间似乎存在差异。如果您有附属程序集,则会有进一步的区别。

MSBuild:正如预期的那样,主程序集具有详细选项卡语言(如果在 Visual Studio 中打开 DLL/EXE 并检查了值,则从技术上讲是块标题)= 语言中性。

同样,MSBuild de-DE 附属程序集 .dll 具有 detail-tab language = Language Neutral

组装:

卫星组装:


Mono / XBuild:主程序集有detail-tab language = Invariant Language(不变国家),de-DE 附属程序集有detail-tab language = German(德国)

组装:

卫星组装:

虽然我知道 Mono 可能使用 Invariant Langauge 代替 Neutral 作为默认值,但有没有办法扭转这种情况以实现 MSBuild 和 XBuild 之间的匹配(可能通过配置步骤)? MSBuild 不将附属程序集的语言环境传播到详细信息选项卡的语言字段,而 XBuild 这样做,是否有原因?同样,是否可以通过任何配置步骤消除这种差异?

【问题讨论】:

【参考方案1】:

不要期望很快就会有复杂的 xbuild 错误修复,因为来自 Microsoft 的 MSBuild 已经开源,Xamarin 团队已经完成了 some work 以使其跨平台(例如,它已经在 Mono 的 Mac 安装程序中提供)。

debian 开发人员(或像您这样的贡献者?)打包它只是时间问题(xbuild 已被弃用)。同时,您可以自己构建并试用。

【讨论】:

以上是关于Mono / XBuild Invariant Language (Invariant Culture) vs. VS2015 MSBuild 的 Neutral Language的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 Mono 的命令行构建 MSBuild 文件(visual studio sln)?

C#/ Mono - 从控制台应用程序读取输出

Linux Mono C#错误:无法打开程序集'Bovine.csproj':文件不包含有效的CIL图像

编译的单声道丢失默认.NET库 - 未定义或导入System.Object

Xamarin Forms Ui 项目(多平台)

无法编译生成的注册码 - MT4109