我正在努力将Windows 8.1通用应用程序升级到Windows 10 UWP应用程序。在我的Windows 10 UWP应用程序中,有一部分代码在之前完全无法正常工作。
我有一个看起来像这样的枚举:
public enum EStaticFile
{
[StringValue("Path of a file")]
CONFIG_FILE_1,
[StringValue("Path of a file")]
CONFIG_FILE_2
}
当我尝试获取任何枚举值的属性时,它总是返回一个空数组。我使用以下代码:
public static StringValue GetStringValueAttribute(this Enum aEnumValue)
{
Type type = aEnumValue.GetType();
FieldInfo fieldInfo = type.GetRuntimeField(aEnumValue.ToString());
StringValue[] attributes = fieldInfo.GetCustomAttributes(typeof(StringValue), false) as StringValue[];
if (attributes.Length > 0)
{
return attributes[0];
}
return null;
}
GetCustomAttributes总是返回一个空数组,所以attributes.Length总是0,所以函数返回null;
Windows 10中有哪些更改会导致无法正常工作?
非常感谢!
答案 0 :(得分:1)
我终于找到了解决问题的方法。
我的解决方案包含C ++项目,所以我激活了.Net Native,就像在我看到的关于将Windows 8.1应用程序迁移到Windows 10 UWP应用程序的每个教程中都说的那样没关系,但这样做设置属性UseDotNetNativeToolChain为true,这会导致问题。要解决这个问题,只需在错误的项目文件中将其设置为false,它就会重新开始工作!而.Net Native仍然可以使用!
希望它有所帮助!