【问题标题】:How to properly include an rd.xml file in a NuGet package?如何在 NuGet 包中正确包含 rd.xml 文件?
【发布时间】:2016-09-25 12:48:24
【问题描述】:

我正在开发一个大量使用反射的库,并针对 .NET Core (netstandard1.3) 和完整的 .NET (net451)。

要使其与 .NET Native(即 UWP Release 版本)一起使用,它需要一个 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 的@987654331 @:

"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 文件;应用因缺少元数据错误而崩溃。

我错过了什么?

【问题讨论】:

  • 如果您将它作为图书馆资源包含,它仍然无法获取它吗?请参阅此处的“无代码更改”:blogs.msdn.microsoft.com/dotnet/2014/05/23/…
  • @MattWhilden 谢谢!我在 project.json 中使用了等效的“嵌入式资源”,它可以工作(请参阅我的答案)。看起来我引用的那篇博文已经过时了。
  • 完美。很高兴你回到正轨。

标签: .net nuget .net-core .net-native


【解决方案1】:

Matt Whilden 的评论让我走上了正确的道路;基于 .xproj 的项目没有文件属性,但 Embedded Resource 的正确等效项是框架部分中的 buildOptions/embed,而不是 packOptions/files

"uap10.0": {
  "buildOptions": {
    "embed": {
      "include": "Properties/MyLibrary.rd.xml"
    }
  }
}

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多