【问题标题】:Best way to share a JSON file via nuget?通过 nuget 共享 JSON 文件的最佳方式?
【发布时间】:2019-03-27 15:14:13
【问题描述】:

我有一个 JSON 模式,描述了如何与我正在开发的 .NET 微服务进行通信。我想在 nuget 文件中与希望通过 Kafka 与我通信的其他服务共享这个 JSON 模式(以及各种其他 poco 对象)。

我的问题是,如何使用 nuget 共享此文件?共享 poco 对象很简单,但我不确定如何共享静态 JSON 文件之类的东西,也不确定这个 nuget 包的使用者将如何引用和使用该 JSON 文件。

我已尝试搜索 nuget 文档,但找不到任何内容。这可能吗?

【问题讨论】:

    标签: json nuget


    【解决方案1】:

    Here are the docs on content files in nupkgs,但请注意这是.nuspec 文件的参考。如果您正在打包项目文件,这通常会自动为您生成。

    项目使用 NuGet 包有两种方式,packages.configPackageReference(.NET Core 使用的 SDK 项目仅支持 PackageReference)。为packages.config 项目安装包时,NuGet 将查看nupkgcontent 目录下的所有文件,并将它们复制到项目的文件夹中。另一方面,使用PackageReference 的项目不会复制文件,而是为全局包文件夹中包的contentFiles 目录中的文件创建MSBuild 内容项。因此,如果您想支持您的包的用户,无论他们使用packages.config 还是PackageReference,您需要复制nupkgcontentcontentFiles 目录中的内容文件。如果您打包 SDK 样式的项目,打包目标将自动将任何内容项添加到 nupkg 中的 contentcontentFiles 目录。

    因此,您需要考虑您的包的用户将如何使用 json 文件(无论他们将使用packages.config 还是PackageReference,以及一旦文件在他们的计算机上他们将如何处理)。如果他们只会以编程方式使用它,那么将 json 文件作为嵌入式资源嵌入到程序集中并为他们提供一种调用方法以将文件作为字符串获取可能会更容易。这样packages.configPackageReference 之间的区别就无关紧要了。

    【讨论】:

    • 感谢您的详细回答。我只会支持 PackageReference,但我认为我更喜欢您关于将文件作为嵌入式资源的第二个建议。
    • 您实际上可以创建一个可供两种类型的项目使用的 Nuget 包。 stackoverflow.com/a/63299701/761755
    • @zivkan,根据您提出的方法,您如何告知开发人员响应的结构?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多