如何将二进制文件从 nuget 包复制到我的输出文件夹?

Posted

技术标签:

【中文标题】如何将二进制文件从 nuget 包复制到我的输出文件夹?【英文标题】:How do I copy binaries from a nuget package to my output folder? 【发布时间】:2021-09-16 17:02:57 【问题描述】:

我使用 Specflow/MSTest 创建了一个测试套件。我需要能够打包它,以便第三方可以运行测试等。

我可以使用 vstest.console.exe 使用我拥有的一些 .runsettings 来执行功能/场景。

我遇到的问题是如何将文件从 Microsoft.TestPlatform nuget 包复制到我的项目输出文件夹(无论是同一个文件夹还是同级文件夹;这不是问题,我可以不用担心)。我似乎可以解决这个问题。

我已经阅读了一些关于 SO 和其他地方的帖子,人们提出了相同/相似的问题,但我无法重现如何去做。

已尝试编辑项目文件以“始终”复制 PackageReference,使用“无”元素等,但似乎无法获得它。 Microsoft.TestPlatform 被广泛使用,所以我猜我在这里遗漏了一些简单的东西;在这种情况下,我无法让 Google 成为我的朋友。

所以,如果我的 .NET5.0(框架可能不相关)项目引用了 Nuget 包,但没有在任何地方的代码中引用它,我该如何指示 Visual Studio 将该包中的文件复制到我需要它们的任何文件夹构建时去吗?

【问题讨论】:

【参考方案1】:

尝试将包管理修改为“Packages.config”,它会自动将dll复制到输出文件夹。

如果你想将dll复制到其他文件夹,你可以在构建后事件中使用xcopy命令。

【讨论】:

【参考方案2】:

dotnet publish 是您要查找的命令

dotnet publish 编译应用程序,读取项目文件中指定的依赖项,并将生成的文件集发布到目录。输出包括以下资产:

带有 dll 扩展名的程序集中的中间语言 (IL) 代码。

包含项目所有依赖项的 .deps.json 文件。

一个 .runtimeconfig.json 文件,它指定应用程序期望的共享运行时,以及运行时的其他配置选项(例如,垃圾收集类型)。

应用程序的依赖项,从 NuGet 缓存复制到输出文件夹。

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish

【讨论】:

以上是关于如何将二进制文件从 nuget 包复制到我的输出文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

让 NuGet 包输出文件

将 pdb 文件包含到我的 nuget (nupkg) 文件中

如何在我的新CSPROJ类库中包含带有本机dll的NuGet包?

将通配符文件名从主包复制到文档?

在 NuGet 安装时将文件复制到 Android 项目

发布构建脚本以将所有文件从不同的目录复制到输出目录