.NETアセンブリをマージするツールの検索常に試行錯誤して、ILMerge
を試してみます。しかし、私はそれを働かせることはありません。今私は非常に単純な例を試してみましたがうまくいきませんでした。.NETアセンブリのマージトラブルシューティングilmerge
のみ、このインタフェースを含むマイライブラリ:アプリケーションのすべての作品をコンパイルした後
using System;
using CommonLib;
namespace ILMergeTest
{
internal class DirectTestPlugin : IPlugin
{
public string Name => "DirectTestPlugin";
public string Version => "4711.0.8.15";
public void Load()
{
Console.WriteLine("Loading Plugin: " + Name + " [Version " + Version + "]");
}
}
}
とProgram.csの
using System;
namespace ILMergeTest
{
internal class Program
{
private static void Main(string[] args)
{
var plugin = new DirectTestPlugin();
plugin.Load();
Console.ReadKey();
}
}
}
:
namespace CommonLib
{
public interface IPlugin
{
string Name { get; }
string Version { get; }
void Load();
}
}
マイコンソールアプリケーションは、クラスが含まれています良い。
今私は、出力ディレクトリにILMerge.exeをコピーし、私のバイナリがどこにあると私のプロジェクトのターゲットフレームワークは、私はいつも次のエラーを取得する.NET 4.6.1.
あるILMerge
mkdir Merged
ilmerge /union /ndebug /t:exe /copyattrs /closed /out:Merged\MergedProgram.exe /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1" "ILMergeTest.exe" "CommonLib.dll"
pause
を実行するために次のバッチを作成します:
ILMerge.Merge: The assembly 'CommonLib' was not merged in correctly. It is still listed as an external reference in the target assembly.
bei ILMerging.ILMerge.Merge() bei ILMerging.ILMerge.Main(String[] args)
この問題を修正するにはどうすればよいですか? ILMergeの文書は私を助けませんでした。
ありがとうございました
あなたの究極の目的は何ですか?これは共有インタフェースプラグインシステムのポイントを打ち破っているようだ。 –
ILMergeはGitHubのオープンソースなので、ドキュメンテーションが十分でないときは、そのソースコードを確認する。https://github.com/microsoft/ilmerge –
@Alex K :最終的な目的は、いくつかのdllをマージすることです。この簡単なテストプロジェクトでは、ILMergeがいつどこでエラーに終わるのかを理解します。この簡単なテストでは、実行可能ファイルにdllを '埋め込むだけです。私の実際のプロジェクトの後半で、私は 'プラグイン'として1つのdllだけを出荷します。 – WPFGermany