如何在 .NET Core 或 .NET Standard 中正确设置 Fody.Costura

ste*_*v-e 5 fody fody-costura .net-core .net-standard-2.0

我无法让 Fody.Costura 在 .NET Core 2.1 或 .NET Standard 2.0 库中运行。wiki 和开放问题似乎没有直接回答这个问题:与经典 .NET Framework 项目(.exe 或 .dll)相比,必须采取哪些不同的做法。

  1. 出于测试目的,我创建了 4 个项目:

    • 一个经典的 .NET Framework .exe 和一个 .dll
    • .NET Core 2.1 .dll
    • .NET 标准 2.0 .dll
  2. 我将 Fody(最新 5.1)和 Costura(最新 4.0)添加到所有项目中。

  3. 然后我为所有项目创建了完全相同的 FodyWeaver.xml。

  4. 我使所有项目都依赖于 Newtonsoft.Json(根据 Nuget 添加它,并在使用 Newtonsoft.Json 的每个项目中创建一个类)。

  5. 我构建了它们并检查了输出 -> Newtonsoft.Json 不在预期的输出目录中。但是,当使用 ILSpy 查看创建的 .dll 文件时,仅 .NET Framework 项目中的二进制文件包含一个 Resources 文件夹,其中包含 Newtonsoft.Json.Dll。

在此输入图像描述

从我在 wiki 中读到的内容来看,不应该有进一步的设置。这些问题并不是说 .NET Core 和 Standard 不受支持,即使正在进行改进等。有人知道如何让这里的东西正常工作吗?对我不认识的文档有任何提示吗?

.NET Core 和 Standard 项目的最终 Dll 应包含 Newtonsoft.Json.dll

更新1

如果我在 FodyWeavers.xml 文件中显式添加 IncludeAssemblies='Newtonsoft.Json',则程序集将作为资源包含在内(在 .NET Core 和 Standard 中)。这是预期的行为吗?

Sim*_*mon 1

Costura 只能在顶级项目(exe)上使用