搜索合併.NET程序集的工具我總是在嘗試ILMerge
時最終結束。但我沒有得到它的工作。現在我嘗試了一個非常簡單的例子,它不起作用。.NET程序集合並排除故障ilmerge
我只包含這個接口庫:
namespace CommonLib
{
public interface IPlugin
{
string Name { get; }
string Version { get; }
void Load();
}
}
我的控制檯應用程序包含類:
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();
}
}
}
編譯應用程序一切正常後精細。
現在我複製ILMerge.exe到輸出目錄,在我的二進制文件,並創建以下批處理執行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
我的項目目標框架是.NET 4.6.1.
我總是得到以下錯誤:
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嵌入到可執行文件中。後來在我的真實項目中,我將只運送一個dll作爲'plugin'。 – WPFGermany