2015-10-16 70 views
0

我有一个编译为DLL的C#类库。我的类库也引用另一个类库DLL。类库作为类库中的嵌入式资源

我需要依赖DLL添加为嵌入的资源,所以我只有1个DLL文件。该文件是我无法控制的软件的插件,并且软件无法正确解析依赖项DLL。添加类库的Windows

我发现实例形式的项目,但无法找到如何添加一个类库作为一个类库项目嵌入的资源。

+0

http://stackoverflow.com/a/625115/1338915 – Chad

+0

使用GAC或实现AppDomain.CurrentDomain.AssemblyResolve事件或使用ILMerge。 –

回答

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 
      } 
     } 
+0

所以,如果我的代码目前看起来像这样,我将如何改变它来实现你所描述的? 'using EmbeddedAssembly; 命名空间MainClassLibrary { 公共部分类MyCustomControl:用户控件 { \t \t公共MyCustomControl() \t \t { \t \t \t变种插件=新EmbdeddedWidgetControl(); \t \t} \t} }' 不好意思的问题。我以前从未使用嵌入式资源。 – modernzombie