标签: ilmerge

Is there a ILMerge equivalent tool for Mono?

I'm looking for a open source tool to merge multiple .NET assemblies into a single assembly.

c# mono ilmerge assemblies

14
推荐指数
2
解决办法
3758
查看次数

将ILMerge与log4net一起使用会导致"由于保护级别而无法访问"错误

我为log4net日志记录对象的初始化创建了一个包装类,以便更容易在ThreadContext中建立自定义属性.这发生在我已经建立的类库中以及许多其他有用的函数中.为了加入所有各种库,我还使用'/ internalize'开关向ILMerge添加了一个AfterBuild目标.

这种初始化方法的所有引用由ILMerge针对性库似乎工作就好了.但是,当我在其他地方引用这个合并的库时.我的实现会引发保护级错误.我已经尝试向可选的exclude(/internalize:excludes.txt)文件中添加各种内容,但这似乎不起作用.

示例excludes.txt:

log4net.Config
log4net.ThreadContext
log4net.LogManager
Run Code Online (Sandbox Code Playgroud)

其他人遇到过这个问题吗?

[编辑]:

这是代码:

 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Logging
{
    public static class Log4NetThreadContext
    {
        public static ILog Initialize(Type declaringType)
        {
            // Read from configuration
            XmlConfigurator.Configure();

            // Set Properties
            ThreadContext.Properties["ID"] = ...
                ...
                ...
                ...

            if(System.Diagnostics.Debugger.IsAttached)
            {
                // Special debugging logger
                return LogManager.GetLogger("DEBUG_MODE");
            }
            else
            {
                // Root logger
                return LogManager.GetLogger(declaringType);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的代码..

private static readonly Type declaringType = 
    MethodBase.GetCurrentMethod().DeclaringType;
private static readonly ILog log =
    Log4NetThreadContext.Initialize(declaringType);
... …
Run Code Online (Sandbox Code Playgroud)

c# log4net ilmerge

13
推荐指数
1
解决办法
1774
查看次数

在ILMerge之后,BinaryFormatter.Deserialize"无法找到程序集"

我有一个带有引用的dll的C#解决方案(也是具有相同.Net版本的C#).当我构建解决方案并运行生成的exe,而不合并exe和引用的DLL时,一切正常.

现在我想将这些合并到一个exe中.我运行ILMerge,一切似乎都正常.我尝试执行exe,它似乎运行正常,直到它尝试反序列化引用的DLL中定义的对象.

using (Stream fstream = new FileStream(file_path, FileMode.Open))
{
    BinaryFormatter bf = new BinaryFormatter();
    return bf.Deserialize(fstream) as ControlledRuleCollection; 
    // throws unable to find assembly exception
}
Run Code Online (Sandbox Code Playgroud)

可能有一些ILMerge选项我在这里丢失了吗?

c# ilmerge binary-serialization

12
推荐指数
3
解决办法
2万
查看次数

ILMerge和本地化资源程序集

我们有一个应用程序,其编译时的结构如下所示:

    • NB-NO
      • Text.resources.dll
    • SV-SE
      • Text.resources.dll
    • Bar.dll
    • foo.exe的
    • Text.dll

是否可以在此使用ILMerge?你会怎么做?

resources ilmerge assemblies localization satellite-assembly

11
推荐指数
2
解决办法
3309
查看次数

在VS安装项目中,如何从MSI中排除项目的依赖项?

我在C#工作.我有一个包含4个项目的小型VS解决方案:

  1. 一个DLL
  2. 一个引用DLL的EXE
  3. 合并项目,它只对前两个步骤中的程序集执行ILMerge
  4. 一个安装项目,它打包Merge项目的.EXE输出.(我已将"项目的主要输出"添加到设置中,在此处指定合并项目)

问题是,安装项目会自动将项目#1和#2检测为项目#3的依赖项.当我将第三个项目的主要输出包含到MSI(安装项目)中时,也会自动拖入依赖项.我不想要这个.

我怎么能阻止它?

我尝试指定"排除过滤器",但无法使其工作.无论我尝试什么,依赖项总是被拖入.

替代文字

我尝试手动修改Setup.vdproj,以删除自动检测到的依赖项目,但是当我在VS中重新加载.vdproj时,自动检测到的依赖项又回来了.

救命?

installation ilmerge visual-studio

11
推荐指数
1
解决办法
7617
查看次数

如何使用ilMerge将dll合并到exe文件中?

我试过了:

C:\Windows\System32>ilmerge /target:winexe /out:c:\output.exe c:\MyProgram.exe c:\Microsoft.WindowsAPICodePack.dll
Run Code Online (Sandbox Code Playgroud)

但得到了:

'ilmerge' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?(顺便说一句,是否有更好的方法将dll合并到exe文件中?)

谢谢

ilmerge windows-api-code-pack

11
推荐指数
1
解决办法
1万
查看次数

尝试合并pdb文件时出现ILMerge异常

我正在尝试将两个程序集合并为一个程序集,它可以很好地工作.然而,当我尝试合并*.pdb文件时,我收到一个错误:

访问路径"F:\ Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.pdb"被拒绝.

如果我使用/ ndebug选项以跳过合并*.pdb文件,它可以正常工作.但是当然在调试时无法加载符号.起初我想在postbuild事件中调用ILMerge时,Planrechung.pdb正在使用并被锁定.我也尝试关闭VS2010并从命令行调用ILMerge,但结果保持不变.我检查过ProcessExplorer,文件上没有句柄.

这就是我称之为ILMerge的方式:

E:\ XP\Tools\ILMerge\ilmerge /targetplatform:v4,"D:\WINDOWS\Microsoft.NET\Framework\v4.0.30319"/ lib:"F:\ Fentec\Businessplan\trunk\Ausgabe\Debug\bin" /out:Planrechnung.dll"F:\ Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.dll""F:\ Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Mandantenverwaltung\Mandantenverwaltung.dll"

我错过了什么吗?如果您需要任何其他信息,请询问.

问候,
Skalli

c# ilmerge .net-4.0 visual-studio-2010

11
推荐指数
1
解决办法
3162
查看次数

是否可以仅使用ILMerge合并依赖项的子集?

我正在尝试一些探索性的事情:

说我有一个图书馆"coolproject",它有依赖关系one.dll,two.dllthree.dll.

我想用ILMerge到coolproject有机结合起来one.dll,并two.dll但不是three.dll.在合并完成后,我应该coolproject.dllthree.dll.无论我打算使用哪里,coolproject.dll我都必须参考three.dll

这甚至可能吗?每当我尝试它,我得到.Unresolved assembly reference not allowed: three.我省略three.dll了设置"Copy Local"= false.

[编辑]:

执行如下:

ILMerge /targetplatform:v2 /log /internalize /out:bin\coolproject.dll obj\Debug\coolproject.dll C:\Users\Nick\Projects\test\bin\one.dll C:\Users\Nick\Projects\test\bin\two.dll
Run Code Online (Sandbox Code Playgroud)

c# ilmerge

11
推荐指数
1
解决办法
4461
查看次数

ILMerge和.NET 4.0的严重问题

对于我的生活,我似乎无法让我的.NET 4应用程序与ILMerge正确合并.即使在设置/ targetplatform,/ lib,/ ndebug 添加自定义ILMerge.exe.config文件之后,输出文件也无法正常工作(它似乎无法"找到"合并的库).

我试过这个,无济于事.除非我使用配置文件,否则我甚至无法构建它,但是当我这样做时它不起作用.没有配置文件,我一直收到错误消息" 不允许未解析的程序集引用:PresentationFramework ".

以下是我的ILMerge命令用作后期构建事件的当前状态:

ilmerge.exe /out:C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\bin\Release\OrangeNote.exe 
  /ndebug /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 
  /lib:"C:\Windows\Microsoft.NET\Framework\v4.0.30319" 
  /lib:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies" 
  "C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\obj\Release\OrangeNote.exe" 
  "C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Lucene.Net\src\Lucene.Net\bin\Release\Lucene.Net.dll" 
  "C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Ookii.Dialogs\src\Ookii.Dialogs.Wpf\bin\Release\Ookii.Dialogs.Wpf.dll" 
  "C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\SharpZipLib\bin\ICSharpCode.SharpZipLib.dll" 
  "C:\Users\Logan\Documents\Visual Studio 2010\Projects\HumanInterfaceProject\HumanInterfaceProject\bin\Release\HipLib.dll"
Run Code Online (Sandbox Code Playgroud)

对我做错了什么的想法?

.net wpf ilmerge .net-4.0

10
推荐指数
4
解决办法
9462
查看次数

如何将所有文件编译为一个exe?

我在C#中编写了一个项目,它使用了大量的图像,Milk模型和openGL,我想将所有内容打包在一个exe中,这样我就可以将它上传到我的网站了.现在我得到了一个依赖于jpgs等其他文件的exe.我尝试过使用ILMerge但无法使用它.有更简单的解决方案吗?谢谢.

c# ilmerge

10
推荐指数
2
解决办法
2万
查看次数