System.FormatException: Input string was not in a correct format

Не работает проект. На дедике в свободной форме все запускается, а когда пытаюсь запустить на локалке - ничего не работает. В чем может быть проблема? Ошибка:

 ---> System.FormatException: Input string was not in a correct format.
   at void Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at float float.Parse(string s)
   at void PropertySystem.EntraceSystemInit() in C:/server-files/dotnet/resources/empire/scripts/PropertySystem.cs:line 222
   at void Main.OnResourceStart() in C:/server-files/dotnet/resources/empire/Main.cs:line 436
   --- End of inner exception stack trace ---
   at object RuntimeMethodHandle.InvokeMethod(object target, object[] arguments, Signature sig, bool constructor, bool wrapExceptions)
   at object System.Reflection.RuntimeMethodInfo.Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)

Код 222-й строки PropertySystem.cs:

if (float.Parse(reader.GetString("sellpoint").Split(",")[0]) != 0)

Код 436 строки main.cs:

PropertySystem.EntraceSystemInit();
HouseSystem.HouseSystemInit();
Infinity.scripts.Custom.RobSystem.InitRobSystem();

Ответы (1 шт):

Автор решения: Alexander Petrov

На дедике и на локалке - разные культуры по умолчанию.

Вы всегда должны явно указывать культуры, на которые рассчитано ваше приложение.

Это можно делать непосредственно в методе - задаём FormatProvider:

float.Parse("5.5", CultureInfo.InvariantCulture)

Или задаём культуру для всего приложения:

CultureInfo.CurrentCulture = new CultureInfo("en-US");
CultureInfo.CurrentUICulture = new CultureInfo("en-US");

Какую именно культуру указать - инвариантную или некую определённюу (ru-RU, fr-FR) - знаете только вы. Или, вернее, автор кода.

→ Ссылка