类库作为类库中的嵌入式资源

本文关键字:类库 嵌入式 资源 | 更新日期: 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
            }
        }