【问题标题】:Linking a resource file to an existing .NET assembly using Assembly Linker使用程序集链接器将资源文件链接到现有的 .NET 程序集
【发布时间】:2014-10-14 13:00:28
【问题描述】:

我正在尝试使用 AL(程序集链接器)将文件 name.ext 链接到 assembly.dll,以模仿使用 /ASSEMBLYLINKRESOURCE 选项在 C++ 中可以完成的操作。

我使用的语法如下:

al.exe assembly.dll /link:name.ext

我收到以下错误:

ALINK:错误 AL1017:未指定目标文件名

我也试过了:

al.exe assembly.dll /out:outAssembly.dll /link:name.ext

得到以下错误:

ALINK:警告 AL1020:忽略包含的程序集“assembly.dll”

ALINK:错误 AL1019:创建程序集时元数据失败 -- 系统找不到指定的文件。

我做错了什么?获取资源链接的正确语法是什么?

谢谢。

【问题讨论】:

  • 程序集链接器需要 .netmodule 文件作为输入,它不能使用 dll。等效的 C# 编译器选项是 /linkresource。 IDE 不支持。黑客 msbuild 在this post 中提出。

标签: c# c++ .net dll linker


【解决方案1】:

程序集链接器从一个或多个模块或资源文件的文件生成一个包含程序集清单的文件。模块是没有程序集清单的中间语言 (IL) 文件。

assembly.dll 不能是程序集链接器的来源,因为它已经带有清单的程序集。所以你得到了这个

ALINK:警告 AL1020:忽略包含的程序集“assembly.dll”

【讨论】:

  • 我想我不能使用ILMerge,因为我要链接的文件不是.NET 程序集,它是一个通用文件,我只需要在使用原始assembly.dll 时复制到输出文件夹...
  • 你说得对,我刚刚阅读了它的文档,发现它做不到。
  • 那为什么不做一个安装项目来部署文件呢? AL 用于嵌入式资源。
  • 在 C++ 中是可能的,而且看起来同样的事情可以由 AssemblyLinker 完成。部署文件不是我们的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多