问题标签 [ilmerge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1530 浏览

msbuild - System.Web.Mvc 的合并问题

我有一个构建脚本,它将 5 个项目构建并合并到一个 dll 中。其中一个项目引用了位于我的 Dependencies 文件夹中的 System.Web.Mvc DLL。我将此文件从 ASP.NET MVC3 文件夹复制到我的项目文件夹中。

这是我运行 ILMerge 后的错误。

任何想法为什么我得到这个?

0 投票
3 回答
1257 浏览

c# - 使用 ILMerge 后应用程序停止记录

我有一个非常简陋的应用程序,它带有一个我想在其上使用 ILMerge 的外部程序集 (log4net.dll)。我将 App.exe 和 log4net.dll 合并,生成的可执行文件 (New.exe) 似乎可以正常工作。但是,New.exe 不再记录,并且在合并之前记录良好。请记住,我在测试 New.exe 之前复制了 App.exe.config。

我不知道该怎么做。有谁知道为什么会发生这种情况?我是否误用了 ILMerge.exe?Reflector 似乎表明 New.exe 是“完整的”;我可以看到 Log4net 程序集和所有内容。

0 投票
1 回答
2081 浏览

visual-studio-2010 - 使用 ILMerge 合并 dll

我正在尝试使用 ILMerge 将一些 dll 合并到一个合并 dll 中。我尝试了几个后期构建命令,但没有任何效果。

C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe /lib:C:\Windows\Microsoft.NET\Framework\v4.0.30319 /lib:”C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies” /t:dll /closed /targetplatform:v4, ”C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0″ /out:DataAccessMerged.dll Frameworks.dll ObservableDictionary.dll

或者

甚至放置宏TargetDir等等....

它没有用。.net 框架是 4 我的 vs 是 2010 sp1。


好吧,伙计们。我希望这对某人有所帮助。问题当然是框架 4,有几种方法可以解决这个问题。我的方法是为ILMerge exe创建一个ILMerge.exe.config文件,然后输入这个xml <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/> </startup> </configuration>

0 投票
2 回答
2256 浏览

c# - 合并 DLL 和更改管理命名空间

我想创建一个与第 3 方 dll合并的单个dll 。这意味着最终消费者只需处理 1 个 dll 而不是 2 个。

为了增强,可以说第 3 方 dll 是 nLog。我如何处理合并 dll 的使用者在他们的项目中已经将 NLog 作为参考的情况?

理想情况下,我想做的是将项目中的 NLog 命名空间更改为“XyzNLog”,这意味着用户不需要做任何别名......知道我该怎么做吗?

现在我知道我可以为我的 NLog 项目添加别名,以便我必须将其称为 XyzNLog,但我希望将其传递给合并的 dll 的消费者,这样就不会发生冲突。

更新 - 解决方案

http://blog.mattbrailsford.com/2010/12/10/avoiding-dependency-conflicts-using-ilmerge/

答对了!因此,通过使用 ILMerge,可以将第三方库 DLL 与 Providers 自己的 DLL 合并,这意味着我们只需部署一个 DLL。但这还不是全部,我们实际上可以更进一步,告诉 ILMerge内化所有依赖项。这样做会将所有第三方类转换为内部声明,这意味着它们只能在最终 DLL 中使用。呜呼!问题解决了=)

鉴于此,我的 dll 的使用者也可能让 NLog 消失的问题......因为我引用的 NLog 转变为全部内部!这正是我想要的。

有人对此有任何反馈或想法吗?

0 投票
1 回答
1470 浏览

.net - 存在非托管代码时避免 BadImageFormatException

我有一个 Web 服务,每当我尝试从 Visual Studio 运行该服务时,它都会引发 BadImageFormatException。 This answer to another question建议对 DLL 运行 peverify 以查看是否有任何问题。虽然我的 web 服务的 DLL 很好,但 web 服务依赖于一个 ILMerged 程序集,它确实有错误:

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x00000055][found unmanaged pointer] [expected unmanaged pointer] 堆栈上的意外类型。

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x0000005D][found unmanaged pointer][expected unmanaged pointer] 堆栈上的意外类型。

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x0000007E] 非托管指针不是可验证的类型。

3 验证 .\MyILMergedAssembly.dll 的错误

(188 个警告)

我认为这些源于我在 MyILMergedAssembly 中的使用Marshal和使用IntPtr,但在我这样做的任何地方,我都将方法声明为unsafe. 我怎样才能摆脱 peverify 给出的错误,并希望摆脱当我尝试运行我的 Web 服务时出现的 BadImageFormatException?

编辑:看起来我可能无法使用 ILMerge 来合并具有不安全代码的程序集。所以我尝试让我的 Web 服务引用 MyILMergedAssembly 中的所有单个 DLL,但我仍然得到一个 BadImageFormatException。现在它给了我一个单独的程序集的例外。当我在那个单独的程序集上运行 peverify 时,我得到:

[IL]:错误:[C:\blah\Connection.dll:连接

.ConnectionBase::.ctor] [HRESULT 0x80070002] - 系统找不到指定的文件。

它所引用的ConnectionBase类就在 Connection.dll 中,或者至少应该是,因为该类是在 Connection 命名空间/项目中定义的。Connection 在其构建选项中选中了“允许不安全代码”。ConnectionBase它可能引用的构造函数被标记为internal

编辑:我尝试在使用带有不安全代码的 DLL 的 Web 服务项目中检查“允许不安全代码”。我还尝试compilerOptions="/unsafe"在 system.codedom > compilers > compiler 节点中添加 Web 服务的 Web.config 文件。但是,当我运行 Web 服务时,我仍然会得到一个包含以下内容的页面:

无法加载文件或程序集“连接”或其依赖项之一。试图加载格式不正确的程序。

0 投票
3 回答
823 浏览

.net - 合并程序集并使用 internal 关键字

合并程序集会改变 internal 关键字的范围吗?

我相当肯定它不会产生影响(或至少不会产生影响),因为任何引用最终程序集的人都无法访问内部类。

这可能是一个没有现实价值的假设问题,但我仍然很好奇。

编辑:我的意思是使用 ILMerge,而不是将源代码组合到一个可构建的程序集中。

0 投票
1 回答
171 浏览

c# - 修复/避免/忽略递归引用错误?

我需要两个相互引用的类库。
为什么?一个用 C# 编译,另一个用 VB.NET 编译。

如果我能以某种方式以编程方式合并程序集,而不需要外部程序甚至扩展框架,那就更好了。

0 投票
1 回答
179 浏览

.net - ilmerge 后查找类型

假设我在 assembly1 和 assembly2 上进行了 ilmerge。

运行合并程序集时,我可以使用Assembly.GetExecutingAssembly.GetTypes()from assembly1 在 assembly2 中查找类型吗?

0 投票
1 回答
293 浏览

c# - 即使使用 XMLDocs 开关,ILMerge 也会产生一个不支持智能感知的 dll

有没有人遇到过这种情况或找到解决方案?我尝试了以下方法:

  1. 直接引用输出dll而不移动它
  2. 从 GAC 卸载输出 dll

这两种选择都没有影响。请注意,生成的 XML 文档与 dll 同名并包含在其中。

0 投票
1 回答
1638 浏览

assemblies - 使用 3rd 的问题。自定义工作流程上的聚会集会(CRM 2011 内部部署)

我想用几个 3rd。自定义工作流程中的派对集会。自定义工作流程编译得很好,插件注册也很好。但是,当我调用它时,我收到有关未找到程序集的错误。它抱怨的大会是第三届。我与我的代码一起使用的聚会集会。ILMerge 不是一个选项,因为它也会引发异常。我试图将有问题的程序集直接复制到 CRM 安装的 bin 目录(CRM 2011 Installation\wwwroot\bin)和实际 CRM IIS 应用程序的 bin(\Program Files\Microsoft Dynamics CRM\CRMWeb\bin)到 no利用。

有人遇到过这个吗?