类库作为类库中的嵌入式资源
本文关键字:类库 嵌入式 资源 | 更新日期: 2023-09-27 18:18:06
我有一个编译成DLL的c#类库。我的类库还引用了另一个类库DLL。
我需要添加依赖DLL作为嵌入式资源,所以我只有1个DLL文件。这个文件是我无法控制的软件的插件,该软件将无法正确解析依赖DLL。
我已经找到了添加类库到Windows窗体项目的例子,但无法找到如何添加类库作为类库项目中的嵌入式资源。
将程序集作为常规文件添加到项目中,而不是作为项目根目录的引用(它可以在任何地方,但为了便于解释,将它放在那里更容易)。
在解决方案资源管理器中单击它,并在属性窗口中将"构建操作"设置为"嵌入式资源"。
您可以使用以下代码片段在运行时加载程序集(请记住更改传递给GetManifestResourceStream的字符串):
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("TestProject.MyAssembly.dll"))
{
if (stream == null)
{
throw new InvalidOperationException("Cannot find resource.");
}
using (var reader = new BinaryReader(stream))
{
var rawAssembly = new byte[(int)stream.Length];
reader.Read(rawAssembly, 0, (int)stream.Length);
var assembly = Assembly.Load(rawAssembly);
// Do what you want with the assembly
}
}