尝试pinvoke和sxs。忽略上下文并使用第一个dll

时间:2012-05-30 19:13:06

标签: c# pinvoke winsxs sxs

我有两个不同版本的非托管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>

感谢您的帮助。

-Nick

0 个答案:

没有答案