首页 > 解决方案 > 包括来自 src 目录之外的文件

问题描述

我有一个这样的解决方案架构:

建筑学

在我的 src 文件夹中,我有一个当前用作 UI 的控制台应用程序项目。这是启动项目。

当我运行我的解决方案时,我无法从 src 目录访问位于 config 目录中的 json 文件。因为,在调试模式下,每个项目都是单独构建的,控制台项目输出不包含 json 文件。

如果可能的话,我想要的是在控制台项目的输出目录中包含一个“config”目录,其中填充了复制到其中的 json 文件。

为了实现它,我尝试将其添加到我的控制台项目的 .csproj 中:

<ItemGroup>
    <Content Include="..\..\config\**\*.*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

基本上,我试图通过解决方案的层次结构并复制 json 文件,如果更新到我的项目的输出。但这不是那么简单,它不起作用。

如何将 json 文件复制到项目的输出目录?

编辑 1:

这是我的 csproj visibles 解决方案的结构:

结构体

标签: .net-coreconfigcsproj

解决方案


好的,我能够修复它。

所以首先我在我的“src”目录旁边物理地创建了目录“config”。

然后我通过 Visual Studio 将 2 个 jsons 文件添加到解决方案中。它创建了一个具有默认名称的目录,我将其重命名为“config”。所以我的结构与屏幕截图上的完全相同,但物理上的结构完全相同。

之后,一切正常。当我构建我的项目时,我在输出目录中有 json 文件。

但是它们位于根目录中,我希望它们位于“config”目录中。所以我修改了我的 csproj 如下:

<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
    <Copy SourceFiles="..\..\config\AppSettings.json" DestinationFolder="$(OutDir)/config" />
    <Copy SourceFiles="..\..\config\DatabaseSettings.json" DestinationFolder="$(OutDir)/config" />
  </Target>
  <Target Name="CopyCustomContentOnPublish" AfterTargets="Publish">
    <Copy SourceFiles="..\..\config\AppSettings.json" DestinationFolder="$(PublishDir)/config" />
    <Copy SourceFiles="..\..\config\DatabaseSettings.json" DestinationFolder="$(PublishDir)/config" />
  </Target>

现在,这太完美了!我的输出目录中有一个配置目录。

还是要谢谢你的帮助。


推荐阅读