如何在 NuGet 包中正确包含 rd.xml 文件?
How to properly include an rd.xml file in a NuGet package?
我正在开发一个大量使用反射的库,并且同时针对 .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
的 packOptions
:
"files": {
"include": "Properties/MyLibrary.rd.xml",
"mappings": {
"lib/uap10.0/MyLibrary/Properties/MyLibrary.rd.xml": "Properties/MyLibrary.rd.xml"
}
}
dotnet pack -c Release
生成的包确实在预期位置包含 MyLibrary.rd.xml
文件。
但是,当我在 UWP 应用程序中使用该包(来自 NuGet,而不是作为项目引用)时,.NET Native 不会获取 .rd.xml
文件;应用因缺少元数据错误而崩溃。
我错过了什么?
Matt Whilden 的评论让我走上了正确的道路;基于 .xproj 的项目没有文件属性,但 Embedded Resource
的正确等效项是框架部分中的 buildOptions/embed
,而不是 packOptions/files
:
"uap10.0": {
"buildOptions": {
"embed": {
"include": "Properties/MyLibrary.rd.xml"
}
}
}
我正在开发一个大量使用反射的库,并且同时针对 .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
的 packOptions
:
"files": {
"include": "Properties/MyLibrary.rd.xml",
"mappings": {
"lib/uap10.0/MyLibrary/Properties/MyLibrary.rd.xml": "Properties/MyLibrary.rd.xml"
}
}
dotnet pack -c Release
生成的包确实在预期位置包含 MyLibrary.rd.xml
文件。
但是,当我在 UWP 应用程序中使用该包(来自 NuGet,而不是作为项目引用)时,.NET Native 不会获取 .rd.xml
文件;应用因缺少元数据错误而崩溃。
我错过了什么?
Matt Whilden 的评论让我走上了正确的道路;基于 .xproj 的项目没有文件属性,但 Embedded Resource
的正确等效项是框架部分中的 buildOptions/embed
,而不是 packOptions/files
:
"uap10.0": {
"buildOptions": {
"embed": {
"include": "Properties/MyLibrary.rd.xml"
}
}
}