.NET 程序集合并疑难解答 ilmerge
.NET assembly merge troubleshooting ilmerge
寻找合并 .NET 程序集的工具我总是尝试 ILMerge
。但我不让它工作。现在我只尝试了一个非常简单的例子,但它不起作用。
我的库只包含这个接口:
namespace CommonLib
{
public interface IPlugin
{
string Name { get; }
string Version { get; }
void Load();
}
}
我的控制台应用程序包含 class:
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 的文档对我一点帮助都没有。
谢谢
现在我明白我的错了!在我的案例中,使用 /union
会导致此错误。
现在我使用以下命令行,一切正常:
mkdir Merged
ilmerge /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 程序集的工具我总是尝试 ILMerge
。但我不让它工作。现在我只尝试了一个非常简单的例子,但它不起作用。
我的库只包含这个接口:
namespace CommonLib
{
public interface IPlugin
{
string Name { get; }
string Version { get; }
void Load();
}
}
我的控制台应用程序包含 class:
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 的文档对我一点帮助都没有。
谢谢
现在我明白我的错了!在我的案例中,使用 /union
会导致此错误。
现在我使用以下命令行,一切正常:
mkdir Merged
ilmerge /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