0

我有两个不同版本的非托管 dll 和每个版本的清单。在我的 C# 代码中,我使用激活上下文来控制使用哪一个。然后我使用 P Invoke 进行实际调用。看来激活上下文的创建和激活是成功的。但是,上下文似乎被忽略了,无论哪个 dll 首先被调用,两者都使用。

P Invoke 可以与 SxS 一起使用吗?还是我设置不正确?

我在 C# 代码中对 C 函数的定义是:

[DllImport("MyMath.dll")]
private static extern double Add(double a, double b);

我的清单只有我添加的程序集标识,以及 Visual Studio 2010 生成的 trustInfo。

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
    <assemblyIdentity name="MyMath.dll"
                   version="1.1.0.0"
                   type="win32"
                   processorArchitecture="x86"/>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel level='asInvoker' uiAccess='false' />
        </requestedPrivileges>
      </security>
    </trustInfo>
</assembly>

谢谢您的帮助。

-缺口

4

0 回答 0