Mono 中的 System.Data.Entity.Design.PluralizationServices 错误
Posted
技术标签:
【中文标题】Mono 中的 System.Data.Entity.Design.PluralizationServices 错误【英文标题】:System.Data.Entity.Design.PluralizationServices Error in Mono 【发布时间】:2014-11-29 12:54:34 【问题描述】:我有一个成熟的 C# 应用程序,该应用程序一直在 Windows 上运行,该应用程序正在移植到 Linux(在 Mono 上),我遇到了关于 System.Data.Entity.Design 中的 PluralizationServices 无法解决的错误。
导致问题的代码行如下:
PluralizationService pluralizationService = PluralizationService.CreateService(System.Globalization.CultureInfo.InvariantCulture);
虽然这从未对在 Microsoft.NET 下运行的 Windows 应用程序造成任何问题,但当该程序在 Mono 下运行时,我收到以下错误:
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
我发现here 似乎有类似问题的其他人只是将 .NET 版本的 .dll 复制到他们的 Mono 项目中,它为他们解决了问题。我尝试了同样的方法,但是我遇到了以下错误:
Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for MudSharp.Framework.LanguageHelpers ---> System.InvalidProgramException: Invalid IL code in System.Data.Entity.Design.PluralizationServices.PluralizationService:CreateService (System.Globalization.CultureInfo): method body is empty.
我在 Ubuntu 上使用 Mono 3.10。我找不到任何关于 Mono 不支持这些功能的建议,我只是不确定如何继续调试这个问题。
任何帮助将不胜感激。
【问题讨论】:
可以等一下EF7吗?发布数据尚不清楚…… 如果它可以解决我遇到的问题,那么它可能是唯一的选择。但是,我想了解为什么我会遇到问题,以及是否可以首先解决它。 【参考方案1】:看起来 Mono 的后期版本确实支持 PluralizationService - 请参阅 function support status。
不过,PluralizationService 目前只支持English。
你试过这个吗:
PluralizationService pluralizationService = PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us"));`
仅供参考,使用 EntityModelSchemaGenerator 类看起来很容易扩展到其他语言。
【讨论】:
【参考方案2】:Plurally 是实体框架多元化服务的 Mono 兼容替代品。
使用复数测试库源代码jsonclassgenerator
IDE:Xamarin Studio 6.1.3 框架:Mono / .NET 4.5 添加 NuGet 包:Newtonsoft.Json,复数JsonClassGenerator.cs 第 10,39 行
使用 Plurally.Pluralizer
using Plurally;
private Pluralizer pluralizationService = new Pluralizer(new CultureInfo("en-us"));
JsonType.csline 8
using Plurally;
Xamasoft.JsonClassGenerator.JsonClassGenerator 生成类结果
"UserAccount": "",
"UserPassword": "",
"ExtraInfo": ""
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace CommonModels
public class loginArgs
public string UserAccount get; set;
public string UserPassword get; set;
public string ExtraInfo get; set;
【讨论】:
Stack Overflow generally works in English;请通过翻译非英语部分来确保您的帖子对其他人尽可能有用。 @NathanTuggy 中文被删除,我测试这个包是启用的。以上是关于Mono 中的 System.Data.Entity.Design.PluralizationServices 错误的主要内容,如果未能解决你的问题,请参考以下文章