Как исправить ошибку «отсутствующие данные о делегировании» в DateTime.ToString () в .NET Core? - PullRequest
0 голосов
/ 04 июля 2018

Я написал эту программу для минимальной ошибки воспроизведения:

using System;

namespace HelloDates
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var today = DateTime.Today;
            Console.WriteLine("I know what day it is!");
            string today_fmt = today.ToString("MM/dd/yyyy");
            Console.WriteLine($"Today is {today_fmt}.");
        }
    }
}

Добавлен Microsoft.DotNet.ILCompiler, опубликованный с CoreRT, запустился и получил такой результат:

Hello World!
I know what day it is!
Unhandled Exception: EETypeRva:0x00283B48: EETypeRva:0x00295C98 is missing delegate marshalling data. To enable delegate marshalling data, add a MarshalDelegate directive to the application rd.xml file. For more information, please visit http://go.microsoft.com/fwlink/?LinkID=393965
   at HelloDates!<BaseAddress>+0x5fed
   at HelloDates!<BaseAddress>+0xfddcf
   at HelloDates!<BaseAddress>+0x1458fb
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetValue(TKey, ConditionalWeakTable`2.CreateValueCallback) + 0x3d
   at System.Runtime.InteropServices.PInvokeMarshal.GetFunctionPointerForDelegate(Delegate) + 0x83
   at HelloDates!<BaseAddress>+0xb6c38
   at HelloDates!<BaseAddress>+0xb9ab8
   at System.Globalization.DateTimeFormatInfo.set_Calendar(Calendar) + 0x94
   at System.Globalization.CultureInfo.get_DateTimeFormat() + 0x57
   at System.Globalization.CultureInfo.GetFormat(Type) + 0x88
   at System.Globalization.DateTimeFormatInfo.get_CurrentInfo() + 0x50
   at System.Globalization.DateTimeFormatInfo.GetInstance(IFormatProvider) + 0x8b
   at HelloDates!<BaseAddress>+0x9b630
   at HelloDates!<BaseAddress>+0x9b4bd
   at HelloDates.Program.Main(String[]) + 0x62
   at HelloDates!<BaseAddress>+0x155416

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

Что особенно расстраивает, так это то, что в более ранней версии программы, где я первоначально столкнулся с ошибкой, ToString () работал просто отлично, даже компилируя в нативный код, и я не могу понять, что могло измениться.

...