필자는 내 문제를 집중적으로 다루는 베어 본 UWP 솔루션을 보유하고 있습니다. 디버그 모드에서 앱을 실행하면 잘 돌아갑니다. 릴리스 모드에서, 나는 다음과 같은 오류가 나타납니다 내 검색을 바탕으로릴리스 빌드에서 UWP - Reflection_InsufficientMetadata_EdbNeeded가 필요합니다.
지금까지, 그것이 내 애플 반사를 사용하기 때문입니다 같은 것, 그리고 모드를 해제 .NET 기본을 사용을하는 스트립 컴파일러가 사용하지 않는 파일을 사용합니다. 내 Default.rd.xml 런타임 지시문 파일에 추가 할 올바른 조합을 찾을 수 없습니다.
app 샘플은 MyNumberEnum의 열거 형 값에 적용되는 사용자 지정 특성 (EnumStringValue)을 만들고 사용자가 주어진 문자열이 사용자 지정 특성 값으로 사용되는지 확인하도록 EnumHelper 클래스를가집니다.
는 사용자 정의와 열거 형 속성:
namespace MyLibrary.Core.Models
{
public enum MyNumberEnum
{
Unknown = 0,
[EnumStringValue("ONE1")]
One = 1,
[EnumStringValue("TWO2")]
Two = 2,
[EnumStringValue("THREE3")]
Three = 3
}
}
사용자 정의 속성과 열거 도우미 :
:namespace MyLibrary.Core
{
internal class EnumStringValueAttribute : Attribute
{
internal EnumStringValueAttribute(string rawValue)
{
this.RawValue = rawValue;
}
internal string RawValue { get; set; }
}
internal static class EnumHelper
{
internal static bool GetCustomAttribute<TEnum>(string value) where TEnum : struct
{
var fields = typeof(TEnum).GetRuntimeFields();
foreach (var field in fields)
{
if (field.GetCustomAttributes(typeof(EnumStringValueAttribute), false).Any())
{
string fieldRawValue = ((EnumStringValueAttribute)field.GetCustomAttributes(typeof(EnumStringValueAttribute), false).First()).RawValue;
if (fieldRawValue == value)
{
return true;
}
}
}
return false;
}
}
}
EnumHelper 같은 라이브러리에서 UWPIssueDemo 클래스의 생성자에서 호출
namespace MyLibrary
{
public class UWPIssueDemo
{
public UWPIssueDemo()
{
if (!EnumHelper.GetCustomAttribute<MyNumberEnum>("ONE1"))
{
throw new IOException("Couldn't find ONE1 (this is unexpected)");
}
}
}
}
디버그 모드에서 문제없이 실행됩니다. 내 Default.rd.xml 파일에 다음 줄을 추가 시도했다, 그러나 어떤 다른 보지 않았다
if (field.GetCustomAttributes(typeof(EnumStringValueAttribute), false).Any())
: 릴리스 모드 (Reflection_InsufficientMetadata_EdbNeeded) 위의 스크린 샷에서 예외가 EnumHelper의 다음 줄에서 발생에서 동작 :
<Assembly Name="MyLibrary" Dynamic="Required All"/>
<Type Name="MyLibrary.Core.EnumStringValueAttribute" Dynamic="All" Browse="All" Serialize="All"/>
릴리스 모드에서이 응용 프로그램을 실행하려면 무엇을 Default.rd.xml 파일에 추가해야합니까?
또한이 샘플의 압축 솔루션을 https://www.dropbox.com/s/dm3wi3oburvdn1o/UWPIssue.zip?dl=0에 업로드했습니다.