私は、dllをプロジェクト出力exeにマージする方法について、長い時間から探しています。ビルド時にすべての従属アセンブリをExeにマージ
Vitevic Assembly Embedderがインストールされていますが、プロジェクトがビルドされても、そのままdllファイルの一部がそのまま残ります。
私は約を聞いて以来ILMergeしかし、私は有用なサポートを見つけることができませんでした。 すべてのdllをマージできるツールが必要です。
私は、dllをプロジェクト出力exeにマージする方法について、長い時間から探しています。ビルド時にすべての従属アセンブリをExeにマージ
Vitevic Assembly Embedderがインストールされていますが、プロジェクトがビルドされても、そのままdllファイルの一部がそのまま残ります。
私は約を聞いて以来ILMergeしかし、私は有用なサポートを見つけることができませんでした。 すべてのdllをマージできるツールが必要です。
これは私が通常何をすべきかです:
場所Mainメソッドで、このコード、またはどこかの前に:
またAppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
この:私は常にCostura使用してきた
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var thisAssembly = Assembly.GetExecutingAssembly();
var assemblyName = new AssemblyName(args.Name);
var dllName = assemblyName.Name + ".dll";
var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(dllName));
if (resources.Any())
{
var resourceName = resources.First();
using (var stream = thisAssembly.GetManifestResourceStream(resourceName))
{
if (stream == null) return null;
var block = new byte[stream.Length];
try
{
stream.Read(block, 0, block.Length);
return Assembly.Load(block);
}
catch (IOException)
{
return null;
}
catch (BadImageFormatException)
{
return null;
}
}
}
return null;
}
FodyのDLLマージ用。 –
@パトリック私は[ここ](http://tech.trailmax.info/2014/01/bundling-all-your-assemblies-into-one-or-alternative-to-ilmerge/)からCoustra Foudyをたどった!伝説の – Umar