首页 > 解决方案 > 将 Nuget 内容文件包含到目标项目中 在 .net Core 项目上发布

问题描述

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

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

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

sql文件链接源

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

在此处输入图像描述

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

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

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

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

我尝试添加到 csproj 文件 在此处输入图像描述 ,但它也不起作用。

谁能帮我?

标签: visual-studio.net-corenugetcsprojdotnet-core-pack

解决方案


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

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

.....
</ItemGroup>

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

一个类似的问题


推荐阅读