只有这个Mono图书馆的头痛......
我从this internationalization tutorial创建了简单的C#控制台应用程序
它在使用mono构建它时有效,但我想使用Visual Studio构建/运行它。我将Mono.Posix
nuget添加到项目中。
程序看起来像这样:
using System;
using Mono.Unix;
using System.Globalization;
using System.Threading;
public class i18n
{
public static void Main(string[] argv)
{
Catalog.Init("lv", "./locale");
Console.WriteLine(Catalog.GetString("My name is {0}"), "Enzo");
int i = 20;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
i = 21;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
i = 22;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
Console.ReadKey();
}
}
首先我收到无法找到MonoPosixHelper.dll
的错误。添加它。然后intl.dll
丢失了。添加。现在我收到PInvokeStackImbalance occured
消息:
托管调试助手'PInvokeStackImbalance'在'D:\ TESTS \ i18n \ i18n \ bin \ x86 \ Debug \ i18n.vshost.exe'中检测到问题。
附加信息:调用PInvoke函数'Mono.Posix!Mono.Unix.Catalog :: bindtextdomain'使堆栈失衡。这很可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。
这一切都发生在Catalog.Init("lv", "./locale");
我不知道什么是错误/缺失等。