当我用 C# 发布应用程序时,所有文件都会复制到输出目录,除了我自己创建的 appsettings.json 或程序的各种资源所在的任何其他目录(图片、声音等),因此,例如,appsettings 被复制到输出目录 .json 你必须在项目文件中写入以下内容
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
对于目录也是如此,我想知道这是否是正常做法,或者是否有必要做一些不同的事情?
正常,因为这是 CopyToOutputDirectory 参数的用途。更详细地说,.NET SDK 有一种特殊的机制,用于默认将文件包含在项目中。例如,扩展名为 .cs 的文件作为 Compile 元素包含在内,使它们可用作编译器输入。扩展名不属于这组已知扩展名(包括 .json)的文件将作为 None 元素包含在内,这意味着它们不会影响构建过程。但None有一个 CopyToOutputDirectory 属性,默认为 Never。如果您在代码中进行设置,如果该文件比现有文件更新(按修改日期),它将告诉构建系统将文件复制到输出目录中。