【问题标题】:Including Nuget Content Files to Target Projects Publish on .net Core Project将 Nuget 内容文件包含到目标项目中 在 .net Core 项目上发布
【发布时间】:2021-07-11 13:22:06
【问题描述】:

在我开始之前,我必须说明我对这个 nuget 包的东西很陌生,所以对我来说是基本的。

我的应用程序有一个核心项目来承载一些 .dll 和 .sql 文件和一个 api 项目。我已经用 dotnet pack 将核心项目做成了一个 nuget 包,并在 github 操作上将其自动化,因此它会在所有 prs 处创建一个新版本并将其推送到我的私人 nuget 服务器,直到这里一切都很好。

当我将此核心包安装到我的 api 项目时,也没有问题。它安装成功,我的 sql 文件按我的预期显示在目标项目中(但作为链接源)。

但是当我尝试使用 dotnet pack 发布这个项目时,.sql 文件不会复制到输出文件夹。我查看了文件的属性,发现它们复制到输出目录的道具已被重置为不复制,并且文件路径是绝对的。

我的目标是使用 github 操作构建和部署此 api,因此绝对路径是不可接受的,此外我不想在目标项目中手动安排某些内容。

我正在用 dotnet pack 打包核心项目 我没有

  • .nuspec 文件
  • 包配置xml
  • nuget 配置
  • 包元数据

或其他类似的东西,我不知道如何使用它们。

我尝试向 csproj 文件中添加 <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies><RestoreProjectStyle>PackageReference</RestoreProjectStyle> 东西,但它们没有用。

我已尝试添加到 csproj 文件 它也没有工作。

谁能帮帮我?

【问题讨论】:

标签: visual-studio .net-core nuget csproj dotnet-core-pack


【解决方案1】:

您唯一需要做的就是将这个节点<PackageCopyToOutput>true</PackageCopyToOutput>写入nuget net core项目的每个内容文件中:

<ItemGroup>
<Content Include="Queries\Account\CheckAccountRef.sql">
<PackageCopyToOutput>true</PackageCopyToOutput>
</Content>

.....
</ItemGroup>

然后,使用 dotnet pack 重新打包您的 nuget 项目,然后将这个新版本重新安装到您的主项目中。在安装之前,你应该删除C:\Users\xxx\.nuget\packages下的旧缓存。

关于这个有a similar issue

【讨论】:

【解决方案2】:

您可以使用 .nuspec 文件来配置所有依赖项。请参考https://docs.microsoft.com/en-us/nuget/reference/nuspec

【讨论】:

  • 谢谢,但使用 true 标签完成了这项工作。
猜你喜欢
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2019-07-12
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多