【问题标题】:Packaging content files into nuget将内容文件打包成 nuget
【发布时间】:2018-07-11 02:27:08
【问题描述】:

我正在使用 AppVeyor 构建一个 .net 核心项目并发布一个 nuget 包作为结果。我指定了一个内容文件:

  <ItemGroup>
    <Content Include="ExchangeScripts\getMarket.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <CopyToPublishDirectory>Always</CopyToPublishDirectory>
    </Content>
  </ItemGroup>

我希望它进入一个包,但是当我最终在应用中引用一个 nuget 包(来自 AppVeyor 的内部存储)时,我得到“找不到文件异常”。

是否有任何额外的步骤可以让我失踪?

【问题讨论】:

  • 它是什么工程之王?我相信this 仍然是正确的......它在本地机器上对你有用吗?
  • @ilyaf,这是一个.net核心控制台项目
  • 你在看什么路径?它可能在OUTPUTDIR\ExchangeScripts\getMarket.js 而不是OUTPUTDIR\getMarket.js 也可以是Release\netcoreapp2.0\ExchangeScripts\getMarket.js
  • 你能把nuget文件下载下来,然后用Nuget Package Explorer打开吗?和/或在本地安装它并查看是否包含该文件以及它的确切路径是什么?有许多步骤可以分解您在此问题中包含多少信息

标签: nuget appveyor


【解决方案1】:

确认包中包含内容文件

如果您不确定某个内容文件是否包含在 nuget 包中,则可以通过打开 .nupkg 包文件并尝试找到您尝试包含的内容文件来快速确认这一点。根据documentation

从技术上讲,NuGet 包只是一个 ZIP 文件 使用 .nupkg 扩展名重命名并且其内容与某些匹配 约定。

由于您已将文件的构建操作设置为 Content(如上文所述),您应该期望在那里找到它,可能在 contentcontentFiles 目录中。 (为了将来参考,您可能会发现自己熟悉一下 nuget 包的内部结构/约定很有用。)

一旦您确认您的内容文件包含在您的包中,那么您似乎只需要弄清楚如何访问该文件的内容。

选项 1:从另一个项目中的 Nuget 包访问内容文件

如果您希望能够从另一个项目引用 Nuget 包中包含的内容文件,则首先将 Nuget 包引用添加到新项目。完成此操作后,您应该会看到包中包含的内容文件显示在引用项目中。此时,您现在可以像往常一样设置 Build ActionCopy to Output Directory 选项,就像您已将这些文件直接添加到引用项目中一样。

以下是使用 Visual Studio 2017 完成此操作的示例:

在上面的例子中,TestLib 是一个 .net core 2.0 类库,它只包含一个包含 2 个文件的目录。每个都有一个Build ActionContent 和一个与其名称对应的Copy to Output Directory 值。一个 nuget 包是从 TestLib 创建的,随后被 ConsoleApp 项目引用。一旦添加了包引用,TestLib 项目中的Content 目录(及其所有文件)就会自动显示在ConsoleApp 项目中。但是,默认情况下,所有内容文件的 Copy to Output Directory 选项将设置为“不复制”,因此您可能希望根据上面的项目文件 sn-p 更改此设置。

但是,如果您的要求不允许您更改引用项目中内容文件上的 Copy to Output Directory 选项,并且您希望将其默认设置为 Always 而不是 Never,那么我会推荐你​​到this SO answer 来了解如何实现这一点。 (提示:如果您还没有使用.nuspec 文件,那么您可以从.nupkg 文件中复制自动生成的文件以用作起点。)

[不太可能] 选项 2:直接从 Nuget 包访问内容文件

如果您想直接从 Nuget 包中访问内容文件,那么您可以自动化从 .nupkg 文件中提取内容文件的过程,并根据您的需要进行处理。我不认为这就是你想要的,但我想以前有人想要这样做。

即使这没有给你你正在寻找的答案,我希望这在某种程度上有所帮助。

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2020-05-02
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多