包含 Nuget 内容文件以在 .net Core 项目上发布目标项目

Including Nuget Content Files to Target Projects Publish on .net Core Project

在我开始之前,我必须声明我对这个 nuget 包的东西还很陌生,所以请了解我的基本知识。

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

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

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

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

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

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

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

我试过添加到 csproj 文件 它也没有用。

谁能帮帮我?

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

你唯一需要做的就是将这个节点<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.

下的旧缓存

关于这个有