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

时间:2015-10-16 16:00:22

标签: c# dll embedded-resource

我有一个编译为DLL的C#类库。我的类库也引用了另一个类库DLL。

我需要将依赖DLL作为嵌入式资源添加,因此我只有1个DLL文件。此文件是我无法控制的软件插件,软件无法正确解析依赖DLL。

我找到了向Windows窗体项目添加类库的示例,但无法找到如何在类库项目中将类库添加为嵌入式资源。

1 个答案:

答案 0 :(得分:0)

将程序集作为常规文件添加到项目中,而不是项目根目录中的引用(它可以在任何地方,但是更容易将它放在那里进行此解释)。

在解决方案资源管理器中单击它,然后在属性窗口中设置'构建操作'到嵌入式资源'。

您可以使用以下代码段在运行时加载程序集(请记住更改传递给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
            }
        }