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