在新的环境加载托管C++程序集的时候经常出现加载dll失败,出现以下提示:
System.IO.FileLoadException: 未能加载文件或程序集“testDll, Version=1.0.3247.21554, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。 (异常来自 HRESULT:0x800736B1)。
使用regsvr32注册该dll也是加载失败。
具体原因是dll是用visual studio sp1编译生成,在新的环境不能直接支持,需要安装Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) 会为 Visual C++ 库安装必要的运行时组件,使用户能够在未安装 Visual C++ 2008 SP1 的计算机上运行使用 Visual C++ SP1 开发的应用程序。
注意:安装好Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)后,如果dll是使用Debug方式编译生成的也是加载失败,部署时需要用Release的方式编译。