如何在构建时使 .dll 和其他文件远离更深文件夹中的 .exe 文件?

How can I keep .dll and other files away from .exe file in deeper folder upon build?

我正在 .NET Core 3.1 中构建 WPF 应用程序,并且愿意重组我的构建目录。 现在看起来像这样:

我想达到的效果是这样的:

我想实现的上面的例子比较完美,但我完全不确定是否可以实现。但是,我的目标是尽量减少与可执行文件一起保存在输出目录中的文件数量。

我查找了各种解决方案,但它们似乎都只适用于 .NET Framework。我的猜测是它发生是因为后者使用 packages.config 文件和 .NET Core 3.1 及以上所有使用 PackageReference 格式。

我尝试过的:

  1. 正在安装 PrettyBin NuGet 包。这在理论上允许控制输出文件夹的结构,但仅适用于 .NET Framework

  2. 关注此 link: 但是,它使用 App.config 文件,该文件也仅存在于 .NET Framework 项目中。

  3. How to save DLLs in a different folder when compiling in Visual Studio? 据我所知,还仅根据 .config 文件提出建议。

  4. 本文:https://weblog.west-wind.com/posts/2019/Apr/30/NET-Core-30-SDK-Projects-Controlling-Output-Folders-and-Content 我试过了,但出于某种原因,它没有按照建议更改输出目录,但也许我做错了什么。

P.S:我已经尝试在 .NET 5.0 中做同样的事情,并且愿意尽快迁移到后者,因此也欢迎任何适用于 .NET 5.0 的解决方案。

我发现 .NET 5.0(和 .NET Core)允许我们创建发布配置文件并发布具有特定设置的应用程序。这在此处的 Microsoft 文档中进行了讨论:https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file#publish-a-single-file-app---visual-studio

我使用的发布配置文件是:

保存并单击发布后,您将在指定的“目标位置”中找到构建文件。这将只包含两个文件**,例如:

希望大家觉得有用。

**如果您使用自己的.dll文件并将它们勾选为“Copy Always”(In Copy to Output Directory),将会有更多文件