我正在开发一个大量使用反射的库,并且目标是.NET Core(netstandard1.3
)和完整的.NET(net451
)。
要使其与.NET Native(即UWP发布版本)一起使用,它需要一个rd.xml文件,如下所示:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Library Name="MyLibrary">
<!-- bunch of directives here -->
</Library>
</Directives>
我知道这些指令有效,因为使用该库将它们插入到UWP应用程序的Application.rd.xml
文件中工作正常,但是应用程序因为缺少元数据而崩溃。
使用this blog post,我尝试将uap10.0
添加到支持的框架,使用与netstandard1.3
+ System.Runtime
相同的依赖关系,然后添加以下内容,以使我的库兼容我project.json
的{{1}}:
packOptions
"files": {
"include": "Properties/MyLibrary.rd.xml",
"mappings": {
"lib/uap10.0/MyLibrary/Properties/MyLibrary.rd.xml": "Properties/MyLibrary.rd.xml"
}
}
生成的包确实包含预期位置的dotnet pack -c Release
文件。
但是,当我在UWP应用程序中使用该包(来自NuGet,而不是作为项目引用)时,.NET Native不会获取MyLibrary.rd.xml
文件;应用程序因缺少元数据错误而崩溃。
我错过了什么?
答案 0 :(得分:1)
Matt Whilden的评论让我走上了正确的道路;基于.xproj的项目没有文件属性,但框架部分中Embedded Resource
的正确等效值为buildOptions/embed
,而不是packOptions/files
:
"uap10.0": {
"buildOptions": {
"embed": {
"include": "Properties/MyLibrary.rd.xml"
}
}
}