C# System.TypeLoadException:解码自定义属性时无法加载类型System.Net.HttpStatusCode,netstandard:(null)
该问题发生在Xamarin.IOS类型的项目和.NetStandard2.0库之间。我已经创建了一个小的解决方案()来演示这个问题。为了实现这一点,Xamarin项目使用Newtonsoft nuget 情况: 在.NetStandard项目中,我有一个包含单个属性(在我的例子中是HttpStatusCode类型的属性)的单个对象,该属性具有定义该属性默认值的自定义属性C# System.TypeLoadException:解码自定义属性时无法加载类型System.Net.HttpStatusCode,netstandard:(null),c#,xamarin.ios,.net-standard,custom-attributes,system.net,C#,Xamarin.ios,.net Standard,Custom Attributes,System.net,该问题发生在Xamarin.IOS类型的项目和.NetStandard2.0库之间。我已经创建了一个小的解决方案()来演示这个问题。为了实现这一点,Xamarin项目使用Newtonsoft nuget 情况: 在.NetStandard项目中,我有一个包含单个属性(在我的例子中是HttpStatusCode类型的属性)的单个对象,该属性具有定义该属性默认值的自定义属性 公共类TestObject { [默认值(HttpStatusCode.OK)] 公共HttpStatusCode代码{get
公共类TestObject
{
[默认值(HttpStatusCode.OK)]
公共HttpStatusCode代码{get;set;}
}
在Xamarin项目中,我创建了一个测试,该测试实例化了在.NetStandard项目中创建的类型的对象,并尝试将其序列化
[测试]
公开无效测试()
{
TestObject obj=新的TestObject(代码:HttpStatusCode.Accepted);
序列化对象(obj);
}
运行测试时,返回的错误如下:System.TypeLoadException:解码自定义属性时无法加载type System.Net.HttpStatusCode,netstandard,Version=2.0.0,Culture=neutral,PublicKeyToken=CC7B13FFCD2DD51:(null)
在我的情况下,csproj中定义的架构必须是*ARMv7+ARM64*类型,以便与我们必须支持的旧iPad兼容。
我提到这一点是因为我知道选择链接器行为到链接所有和支持的架构到ARM64可以让测试顺利通过
编辑
回答问题为什么需要使用两个项目:
事实上,本文提供的解决方案只是一个更大项目的一小部分。
在这个项目中,我们提供了应用程序的Windows版本(.NetCore 3.1)和IOS版本(Xamarin.IOS)。
为了在这两个不同的项目之间共享我们的模型,我们希望使用.NetStandard类型的库,而不是将该库分离为Windows和IOS项目。
如果其他体系结构解决方案能够解决我们的问题,我们愿意接受,但目前我们只有这些
如果您对问题及其背景有任何进一步的问题,请毫不犹豫地提问
提前感谢您的帮助您好,您能解释一下为什么需要创建两个解决方案来实现此属性吗。“对不起,我太了解你想做什么了。”JuniorJiang MSFT在编辑后回答