в поисках инструмента для слияния сборок .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: сборка CommonLib была неправильно объединена. Он по-прежнему указан как внешняя ссылка в целевой сборке.
через ILMerging.ILMerge.Merge () через ILMerging.ILMerge.Main (String [] args)
Как я могу это исправить? Документация ILMerge мне совершенно не помогла.
Спасибо
plugin
. - person WPFGermany   schedule 29.06.2017