Advertisement
Brick

C# Dll Embedding

Aug 30th, 2015
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.39 KB | None | 0 0
  1.     <Target Name="AfterResolveReferences">
  2.         <ItemGroup>
  3.             <EmbeddedResource Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
  4.                 <LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
  5.             </EmbeddedResource>
  6.         </ItemGroup>
  7.     </Target>  
  8.  
  9.         AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;
  10.  
  11. using System;
  12. using System.Globalization;
  13. using System.IO;
  14. using System.Reflection;
  15.  
  16.     private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
  17.         {
  18.             Assembly executingAssembly = Assembly.GetExecutingAssembly();
  19.             AssemblyName assemblyName = new AssemblyName(args.Name);
  20.  
  21.             string path = assemblyName.Name + ".dll";
  22.             if (assemblyName.CultureInfo.Equals(CultureInfo.InvariantCulture) == false)
  23.             {
  24.                 path = $@"{assemblyName.CultureInfo}\{path}";
  25.             }
  26.  
  27.             using (Stream stream = executingAssembly.GetManifestResourceStream(path))
  28.             {
  29.                 if (stream == null)
  30.                     return null;
  31.  
  32.                 byte[] assemblyRawBytes = new byte[stream.Length];
  33.                 stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length);
  34.                 return Assembly.Load(assemblyRawBytes);
  35.             }
  36.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement