1

我正在使用 .Net 4 组件,该组件使用子目录中的 .manifest 文件创建激活上下文(通过互操作)。

AppDir

- App.exe (.Net 4)
- App.dll (.Net 4)
---- SubDir
-------- lib.dll (Native x86)
------- lib.manifest

    activationContext = new NativeMethods.ACTCTX();
    activationContext.cbSize = Marshal.SizeOf(typeof(NativeMethods.ACTCTX));
    activationContext.lpSource = this.ManifestFileName;
    activationContext.dwFlags = 4;
    activationContext.lpAssemblyDirectory = new System.IO.FileInfo(this.ManifestFileName).Directory.FullName;
    contextHandle = NativeMethods.CreateActCtx(ref activationContext);
    int winError = Marshal.GetLastWin32Error();

当前目录 = AppDir

清单路径 = .\SubDir\lib.manifest

在 Win 7 中,SubDir/lib.dll 被加载并执行得很好。

在 Win XP 清单文件加载正常但系统然后尝试加载 AppDir/lib.dll,而不是 AppDir/SubDir/lib.dll

我已经通过 ProcMon 验证了这一点。如果我将 SubDir 中的所有内容复制到 AppDir 并指向 AppDir/lib.manifest,它在 XP 即当前目录中工作正常。

我需要做什么才能使 XP 在 SubDir 中加载 lib.dll?

4

0 回答 0