2016-09-25 105 views
1

我正在開發一個大量使用反射的庫,並且同時針對.NET Core(netstandard1.3)和完整.NET(net451)。如何在NuGet包中正確包含rd.xml文件?

,使之與.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應用程序的文件工作正常,但該應用程序因爲缺少元數據而崩潰。

使用this blog post,我試圖使我的圖書館兼容加入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文件。

但是,當我在UWP應用程序中使用該包(從NuGet,而不是項目引用)時,.NET Native不會選取.rd.xml文件;該應用程序崩潰,缺少元數據錯誤。

我錯過了什麼?

+1

如果你把它作爲一個資源庫它仍然無法把它撿起來?請參閱「無代碼更改」:https://blogs.msdn.microsoft.com/dotnet/2014/05/23/net-native-deep-dive-making-your-library-great/ –

+0

@MattWhilden謝謝!我在project.json中使用了相當於「嵌入式資源」的工具,並且工作正常(請參閱我的答案)。看起來像我引用的博文是過時的。 –

+0

完美。很高興你回到正軌。 –

回答

1

Matt Whilden的評論讓我走上了正確的道路; .xproj爲基礎的項目不具有文件的屬性,但Embedded Resource正確的對等是在框架部分buildOptions/embed,不packOptions/files

"uap10.0": { 
    "buildOptions": { 
    "embed": { 
     "include": "Properties/MyLibrary.rd.xml" 
    } 
    } 
} 
相關問題