gpt4 book ai didi

c# - NodaTime TypeInitializationException 仅限设备,仅限发布

转载 作者:行者123 更新时间:2023-11-30 22:03:04 25 4
gpt4 key购买 nike

我在使用 NodaTime 时遇到 TypeInitializationException,但仅限于 Release 且仅限于设备。

这是堆栈跟踪:

System.TypeInitializationException: The type initializer for 'Patterns' threw an exception. ---> System.TypeInitializationException: The type initializer for 'NodaTime.Text.ZonedDateTimePattern' threw an exception. ---> System.TypeInitializationException: The type initializer for 'NodaTime.DateTimeZone' threw an exception. ---> System.TypeInitializationException: The type initializer for 'NodaTime.Text.OffsetPattern' threw an exception. ---> System.Resources.MissingManifestResourceException: Exception of type 'System.Resources.MissingManifestResourceException' was thrown.
at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
at NodaTime.Globalization.NodaFormatInfo.get_OffsetPatternLong()
at NodaTime.Text.OffsetPatternParser.ParsePartialPattern(String patternText, NodaFormatInfo formatInfo)
at NodaTime.Text.OffsetPatternParser.CreateGeneralPattern(NodaFormatInfo formatInfo)
at NodaTime.Text.OffsetPatternParser.ParsePartialPattern(String patternText, NodaFormatInfo formatInfo)
at NodaTime.Text.OffsetPatternParser.ParsePattern(String patternText, NodaFormatInfo formatInfo)
at NodaTime.Text.FixedFormatInfoPatternParser`1.<>c__DisplayClass0.<.ctor>b__2(String patternText)
at NodaTime.Utility.Cache`2.GetOrAdd(TKey key)
at NodaTime.Text.OffsetPattern.Create(String patternText, NodaFormatInfo formatInfo)
at NodaTime.Text.OffsetPattern..cctor()
--- End of inner exception stack trace ---
at NodaTime.TimeZones.FixedDateTimeZone.MakeId(Offset offset)
at NodaTime.DateTimeZone.BuildFixedZoneCache()
at NodaTime.DateTimeZone..cctor()
--- End of inner exception stack trace ---
at NodaTime.LocalDateTime.InUtc()
at NodaTime.Text.ZonedDateTimePattern..cctor()
--- End of inner exception stack trace ---
at NodaTime.Text.ZonedDateTimePattern.CreateWithInvariantCulture(String patternText, IDateTimeZoneProvider zoneProvider)
at NodaTime.Text.ZonedDateTimePattern.Patterns..cctor()
--- End of inner exception stack trace ---
at NodaTime.ZonedDateTime.ToString(String patternText, IFormatProvider formatProvider)
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
at System.Text.StringBuilder.AppendFormat(String format, Object[] args)
at Models.EventSummary.get_DisplayDate()

最佳答案

workaround by Phil Hoff为我们解决了这个问题。创建以下 WindowsRuntimeResourceManager 类:

/// <summary>
/// from http://blogs.msdn.com/b/philliphoff/archive/2014/11/19/missingmanifestresourceexception-when-using-portable-class-libraries-in-winrt.aspx
/// </summary>
public class WindowsRuntimeResourceManager : ResourceManager
{
private readonly ResourceLoader _resourceLoader;

private WindowsRuntimeResourceManager(string baseName, Assembly assembly)
: base(baseName, assembly)
{
_resourceLoader = ResourceLoader.GetForViewIndependentUse(baseName);
}

public static void InjectIntoResxGeneratedApplicationResourcesClass(Type resxGeneratedApplicationResourcesClass)
{
resxGeneratedApplicationResourcesClass.GetRuntimeFields()
.First(m => m.Name == "resourceMan")
.SetValue(null, new WindowsRuntimeResourceManager(resxGeneratedApplicationResourcesClass.FullName, resxGeneratedApplicationResourcesClass.GetTypeInfo().Assembly));
}

public override string GetString(string name, CultureInfo culture)
{
return _resourceLoader.GetString(name);
}
}

在使用 NodaTime 之前(例如,在您的 App 构造函数中)替换 NodaTime 程序集的资源管理器:

        Assembly nodaTimeAssembly = typeof(LocalDate).GetTypeInfo().Assembly;

Type messagesResource = nodaTimeAssembly.GetType("NodaTime.Properties.Messages");
Type patternResource = nodaTimeAssembly.GetType("NodaTime.Properties.PatternResources");

WindowsRuntimeResourceManager.InjectIntoResxGeneratedApplicationResourcesClass(messagesResource);
WindowsRuntimeResourceManager.InjectIntoResxGeneratedApplicationResourcesClass(patternResource);

关于c# - NodaTime TypeInitializationException 仅限设备,仅限发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com