如何正确包括在NuGet包的rd.xml文件?(How to properly include an

2019-09-29 18:55发布

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

为了使之与.NET本地(即UWP发布版本)的工作,它需要一个rd.xml文件,它看起来像这样:

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Library Name="MyLibrary">
    <!-- bunch of directives here -->
  </Library>
</Directives>

我知道这些指令的工作,因为它们插入的Application.rd.xml使用该库的应用程序UWP文件工作正常,但由于缺少否则元数据的应用程序崩溃。

使用这个博客帖子 ,我试图通过增加使我的图书馆兼容uap10.0到支持的框架,使用相同的依赖关系netstandard1.3 + System.Runtime ,然后添加以下到我的project.jsonpackOptions

"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在预期的地方文件。

然而,.NET本地不拿起.rd.xml文件时,我使用包(来自的NuGet,而不是作为一个项目引用)在UWP应用; 该应用程序缺失的元数据错误崩溃。

我在想什么?

Answer 1:

马特Whilden的评论让我在正确的道路上; .xproj为基础的项目不具有文件属性,但正确的对等Embedded ResourcebuildOptions/embed在框架部分,不packOptions/files

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


文章来源: How to properly include an rd.xml file in a NuGet package?