gpt4 book ai didi

c++ - SxS list 中的程序集身份名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:38 25 4
gpt4 key购买 nike

我有两个关于激活上下文 API 和 SxS list 的问题。它们看起来很简单,但我仍然找不到适合它们的答案。

我有两个文件名为 foo.dll 和 bar.dll 的 dll 库,它们都带有嵌入式 list ,foo 依赖于 bar。除了文件名之外,有什么方法可以为这两个文件分配 assemblyIdentity 名称吗?例如,如果我希望 bar.dll 的程序集标识为 CompanyName.Subsection.bar ?如果我像这样更改它的身份 - 我在尝试加载 foo.dll 时出错 "Dependent Assembly CompanyName.Subsection.bar,type="win32",version="0.1.2.3" could not be found" .当然,如果我将名称程序集标识指定为文件名 (<assemblyIdentity name="bar"),一切正常,但是有没有办法使用这些点分名称?

foo.dll

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="foo" version="0.1.2.3" type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity name="CompanyName.Subsection.bar" version="0.1.2.3" type="win32" />
</dependentAssembly>
</dependency>
<file name="foo.dll">
</file>
</assembly>

bar.dll

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="CompanyName.Subsection.bar" version="0.1.2.3" type="win32"/>
<file name="bar.dll">
</file>
</assembly>

最佳答案

如果不是嵌入 bar.dll 的 list ,而是将它与 dll 本身放在一个单独的文件夹中,则可以做到这一点。即:

foo.dll
CompanyName.Subsection.bar/
├── bar.dll
└── CompanyName.Subsection.bar.manifest

您仍然需要将第一个 list 嵌入到 foo.dll 中。我相信您可以从该 list 中删除以下代码片段,因为它是嵌入式 list ,因此不需要指定哪些 dll 属于程序集:

<file name="foo.dll">
</file>

bar.dll 的 list 很好,但请务必按​​照 assemblyIdentity 元素中指定的方式完全命名文件夹 list 文件(参见上面的示例文件夹结构).

另请注意,您可以使用 sxstrace 诊断与加载 SxS 程序集相关的问题。命令行工具。分步说明:

  1. 从 Visual Studio 命令行运行 sxstrace trace -logfile:mytrace.etl。在您按下 ENTER 之前,该命令不会返回。但是,先不要按 ENTER。
  2. 启动加载 foo.dll 的应用程序以重现您的问题
  3. 然后在命令行窗口中按 ENTER 键停止 sxstrace
  4. 您现在有一个文件 mytrace.etl,它不是人类可读的。通过运行 sxstrace parse -logfile:mytrace.etl -outfile:mytrace.txt 将其转换为可读格式。您会得到一个文件 mytrace.txt,它显示了当您加载 foo.dll 时发生的情况以及它无法解析其某些依赖项的位置。

关于c++ - SxS list 中的程序集身份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com