.net core NET5&x2B;F#-如何将多个控制台应用程序构建到一个文件夹中

.net core NET5&x2B;F#-如何将多个控制台应用程序构建到一个文件夹中,.net-core,f#,.net-5,.net Core,F#,.net 5,假设我有两个F#项目,目标是NET5,并生产控制台应用程序。让我们称它们为MyService和MyAdminConsole。构建解决方案时,文件夹,例如..\MyService\bin\x64\Debug\net5.0和..\MyAdminConsole\bin\x64\Debug\net5.0将包含: ... appsettings.json ... MyService.exe MyService.dll MyService.deps.json MyService.runtimeconfig

假设我有两个F#项目,目标是
NET5
,并生产控制台应用程序。让我们称它们为
MyService
MyAdminConsole
。构建解决方案时,文件夹,例如
..\MyService\bin\x64\Debug\net5.0
..\MyAdminConsole\bin\x64\Debug\net5.0
将包含:

...
appsettings.json
...
MyService.exe
MyService.dll
MyService.deps.json 
MyService.runtimeconfig.json
MyService.runtimeconfig.dev.json
...

其中
appsettings.json
显然只存在于
MyService
中,因为它是需要设置的服务

现在,我想将服务和管理控制台构建到同一个文件夹中,以便管理控制台可以访问相同的
appsettings.json
,我强调的是相同的
appsettings.json
,而不是它的副本

这似乎很简单,对吗?只需在
MyService
项目中添加对
MyAdminConsole
的引用。但是,当我重新构建解决方案时,
MyAdminConsole.exe
MyAdminConsole.dll
被复制到
..\MyService\bin\x64\Debug\net5.0
但是
MyAdminConsole.*.json
不是。随后,
MyAdminConsole
将无法从该文件夹工作

当然,我可以添加构建后步骤,并在需要的地方复制这些json文件。然而,这看起来很丑陋,而且完全是错误的

我想知道什么是正确的解决办法?谢谢


PS这可能也适用于C#解决方案,但我尚未对此进行检查。

如果我正确理解了您的问题,请查看

中提出的解决方法。我觉得这是一个关于部署而不是构建的问题。在什么情况下,您实际上需要将所有内容都放在同一个文件夹中?为什么?(这不是一件不合理的事情,我只是想了解上下文,看看我是否有一个有用的答案)在构建时,当然,然后我会发布它或只是复制单个文件夹。因为这不是一个web应用程序,所以复制就足够了。我也解释了为什么
MyService
MyAdminConsole
必须在同一个文件夹中,它们必须共享一个
appsetting.json
。一个管理控制台应该能够修改它,一个服务应该能够使用它。有一个“发布”步骤来组合这两个输出是合理的,因此从开发人员的角度来看,将这两个输出放在同一个位置的需要是微不足道的。但它仍然是一个公平的问题,想知道它是否可以在没有额外工作的情况下完成。嗯,基于几十年的经验,我强烈建议您始终保持项目的输出文件夹不变,因为处理这些文件夹很容易导致各种各样的麻烦,而且很可能是在未来的意外时刻。如果您还没有构建和/或发布脚本,那么就完全为这种目的创建它。构建后的步骤很好,但我不会使用它们来为此修改输出文件夹。改为复制到其他地方。
...
MyAdminConsole.exe
MyAdminConsole.dll
MyAdminConsole.deps.json 
MyAdminConsole.runtimeconfig.json
MyAdminConsole.runtimeconfig.dev.json
...