3

我尝试将我的 VS 2012 .Net 项目与使用 VS 2005 构建的旧本机 Dll 放在一个目录中。出于安装原因,我无法在用户机器上安装 VC Redist,因此我将 msvcr、msvcp、msvcm 和 vcomp Dll 放在我从 MS 中找到的最新 redist 版本中,也在该目录中。我已经创建了具有此内容的 .Manifest 文件 Microsoft.VC80.CRT.Manifest 和 Microsoft.VC80.OpenMP.Manifest 文件,例如 CRT:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation-->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity name="Microsoft.VC80.CRT" type="win32" processorArchitecture="amd64" version="8.0.50608.0"/>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" processorArchitecture="amd64" version="8.0.50727.6195" publicKeyToken="1fc8b3b9a1e18e3b" />
            <bindingRedirect oldVersion="8.0.41204.256-8.0.50727.762" newVersion="8.0.50727.6195"/>
        </dependentAssembly>
    </dependency>
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>

通过分析事件日志和 sxstrace,我看到他正在寻找版本 8.0.50608.0,我提供并重定向到 8.0.50727.6195。

正如我所说,在 eventvwr 和 sxstrace 中,我看到了一些故障并修复了它们。现在在 eventlog 中什么都没有出现,但 sxstrace 只说:创建激活上下文失败。没有任何理由。从应用程序本身,我得到并排配置错误消息框。

整个东西都是64位的。.Net 应用程序、包装器和本机 Dll。

如果我安装 redist 包,它工作正常。但对于我的目标机器,这是不可能的。

有人有想法吗?

4

0 回答 0