【问题标题】:FileNotFoundException when the .csproj is referred as Nuget package当 .csproj 被称为 Nuget 包时出现 FileNotFoundException
【发布时间】:2020-11-02 19:54:07
【问题描述】:

我正在研究一个解决方案,我们有三个项目,

  1. 配置项目 - 这是 .NetStandard 项目,我们拥有所有服务配置代码,并且我们有一个名为 config.json(包含外部服务信息)的 json 文件。
  2. Communication Project - 这是 .NetStandard 项目,将用于与基于 config.json 文件的一些外部服务进行通信。配置项目在这里称为项目。
  3. Restful API - 这是一个 .Net 核心 Web api 项目,它将调用 Communication 项目以连接外部服务。

在单一解决方案下一切正常。

目前我正在做一些重构工作,让这些每个项目都在不同的存储库下,层次结构是这样的,

  • 配置项目在通信项目中称为 nuget 引用,而通信项目在 Rest API 项目中称为 nuget。

执行此操作后,现在当我尝试运行我的 Rest 服务时,我收到了 Communication 项目抛出的“FileNotFound Exception”,因为它无法找到 Config.json 文件。

我在 Configuration 项目中为 Config.json 文件设置了 CopyToOutputDirectory,当它在 Communication 项目(作为 nuget)中被引用时,我在 Communication 项目中看到了自动生成的 Config.json。

我不确定问题出在哪里。有人可以推荐吗?

【问题讨论】:

  • 如果你查看 api 项目的输出文件夹,你看到那里的文件了吗?我的猜测是你没有。您可能需要将通信项目导入并重新导出 json 文件
  • 我也没有在通讯文件夹中看到该文件。由于文件是在引用配置项目时自动生成的,我无法将其复制到输出目录
  • 阅读文档 :) docs.microsoft.com/en-us/nuget/reference/… - 这是第一次的痛苦过程,我知道
  • 我检查了文档,没有任何帮助。似乎问题与此有关,stackoverflow.com/questions/40469058/…

标签: c# .net-core


【解决方案1】:

我通过在 .csproj 中添加以下内容解决了这个问题,

  <ItemGroup>
    <Content Include="ContentFiles\**" PackagePath="contentFiles\any\any;content" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
  </ItemGroup>

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2016-03-13
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多