我无法在.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。
为了测试目的,我创建了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。
根据我在维基上读到的,应该不需要进一步设置。问题没有说 .NET Core 和 Standard 不支持,即使有改进等正在进行。有人知道如何让事情在这里运作吗?有没有我没有认识到的文档提示?
.NET Core 和 Standard 项目的最终 Dlls 应包括 Newtonsoft.Json.dll
更新 1
如果我在 FodyWeavers.xml 文件中明确添加 IncludeAssemblies='Newtonsoft.Json',则该程序集将作为资源包含(在 .NET Core 和 Standard 中均是如此)。这是预期行为吗?