When Owin was released, I created WebGenius. A small exe you can drop in any folder, run it and everything is accesible as web pages.
I embedded the assemblies like this:
static Program()
{
AppDomain.CurrentDomain.AssemblyResolve += ResolveAssembly;
}
static Assembly ResolveAssembly(object sender, ResolveEventArgs args)
{
var resourceName = "WebGenius." + new AssemblyName(args.Name).Name + ".dll";
Console.WriteLine("Resolving: " + resourceName);
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream == null) return null;
var assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
}
However I just found out about an amazing plugin for the Fody dll weaver:
- Include Costure.Fody nuget into your exe project and your done.
Some options for your FodyWeavers.xml
<Costura CreateTemporaryAssemblies='false' />
<Costura IncludeDebugSymbols='false' />
<Costura DisableCompression='false' />
<Costura ExcludeAssemblies='Foo|Bar' />-->
<Costura IncludeAssemblies='Foo|Bar' />-->
<Costura Unmanaged32Assemblies='Foo32|Bar32' Unmanaged64Assemblies='Foo64|Bar64' />
<Costura PreloadOrder='Foo|Bar' />
Some options for you project file:
<Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild;NonWinFodyTarget" >
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>