完整的初学者在这里。
我需要在 C#/.NET Framework 项目中嵌入一个 DLL。经过一番阅读,我发现我可以使用 Fody/Costura 来做到这一点。事实上,它非常简单,当从一个空白项目开始时,我能够嵌入并且一切正常。
但是,当我尝试将我的 DLL 嵌入到已经存在的项目中时,我遇到了一些问题。在这个现有项目中,项目提供的 DLL(比如 Foo.dll)已经加载如下:
IExpInstAccessContainer retval;
if (!File.Exists(filename))
{
// assume GAC specification
retval = (IExpInstAccessContainer) Assembly.Load(filename).CreateInstance(classname);
}
else
{
retval = (IExpInstAccessContainer) Assembly.LoadFrom(filename).CreateInstance(classname);
}
其中文件名是 Foo.dll 的路径。安装 Fody 和 Fody.Costura 后,出现以下错误:
无法将“Demo.Exp.Api.InstAccessContainer”类型的对象转换为“Demo.Interfaces.ExpAccess_V1.IExpInstAccessContainer”类型。
我尝试使用 FodyWeavers.xml 排除提供的 DLL,但似乎不起作用
<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura Unmanaged32Assemblies="main" Unmanaged64Assemblies="main" ExcludeAssemblies='Foo'/ >
</Weavers>
我该怎么做呢?