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

5
我无法在.NET Core 2.1或.NET Standard 2.0库中运行Fody.Costura。维基和公开问题似乎没有直接回答这个问题,需要与经典的.NET Framework项目(.exe或.dll)有什么不同。
为了测试目的,我创建了4个项目: - 经典的.NET Framework .exe和一个.dll - .NET Core 2.1 .dll - .NET Standard 2.0 .dll
我将Fody(最新版本5.1)和Costura(最新版本4.0)添加到所有项目中。 然后我为所有项目创建了完全相同的FodyWeaver.xml。 我使所有项目依赖于Newtonsoft.Json(通过Nuget添加它,并在每个项目中创建使用Newtonsoft.Json的类)。 我构建它们并检查输出 - >预期中Newtonsoft.Json不在任何输出目录中。但是当使用ILSpy查看创建的.dll文件时,只有来自.NET Framework项目的二进制文件包含Resources文件夹,其中包括Newtonsoft.Json.Dll。

enter image description here

根据我在维基上读到的,应该不需要进一步设置。问题没有说 .NET Core 和 Standard 不支持,即使有改进等正在进行。有人知道如何让事情在这里运作吗?有没有我没有认识到的文档提示?

.NET Core 和 Standard 项目的最终 Dlls 应包括 Newtonsoft.Json.dll

更新 1

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


你解决了吗?我目前也遇到了同样的问题。 - Karim El Jed
1个回答

1

Costura 应仅用于顶层项目(即 exe)。


嗨@Simon,这些项目彼此不依赖(不相互引用)。我只是为了测试目的而创建了一个包含不同项目类型的解决方案。那么现在还是这样吗?请查看我的最新更新以获取更多详细信息。 - stev-e
@stev-e 如果没有可下载的重现文件,很难确定问题所在。我建议您提出一个问题并遵循问题模板 https://github.com/Fody/Costura/issues/new?template=bug_report.md - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接