在.NET项目开发中,特别是当涉及到多框架支持和SDK风格项目时,管理输出目录变得尤为重要。最近,我在解决方案中进行了重大更改,将项目转换为SDK风格项目,并注意到输出目录结构有所变化。本文将探讨这些变化的原因,并提供解决方案,让您的项目输出更加符合预期。
问题描述
我有一个包含多个框架版本(如 .NET 4.0, .NET 4.6.1, .NET 4.7.2, .NET 4.8)的解决方案。启动项目是一个 .NET Framework 4.7.2 的控制台应用程序(.exe),我也将其转换成了SDK风格项目。在构建解决方案或启动项目后,生成的可执行文件(.exe)被放在了bin\Debug\net472
目录下,而不是预期的bin\Debug
目录中。此外,net472
目录包含了.exe文件和部分DLL,而bin\Debug
目录中也有一些DLL文件。
原因分析
SDK风格的项目默认会在输出目录中自动附加目标框架标识符(Target Framework Moniker, TFM)如net472
或net8.0
,以及运行时标识符(Runtime Identifier, RID)