c# - 如何正确部署托管/非托管 C++ 库

标签 c# deployment .net-4.0 c++-cli

我有一个主要用 C# 编写的控制台应用程序,目标是 .Net 4。它还使用了一个 C++/CLI 库,它包装了一个非托管的 C++ 库。一切都是在 x86 平台的 Release模式下构建的,除了在 Win32 中构建的 C++?CLI 库。

因此,当我在我的 Win 7 工作站上调用控制台应用程序时,它可以正常工作。但是,当我将该文件夹移动到我的 Win 2003 SP2 应用程序服务器时,它不会加载,并声明以下内容:

“System.IO.FileNotFoundException:无法加载文件或程序集‘MyWrapper.dll’或其依赖项之一。找不到指定的模块。 文件名:“MyWrapper.dll”。

我找到了将以下内容添加到我的 app.config 的建议,但没有帮助:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

我错过了什么?

编辑:.Net 4 安装在我的 Win 2003 SP2 应用程序服务器上,用纯 C# 编写并面向 .Net 4.0 的控制台应用程序可以在上面运行。

编辑 2:MyWrapper.dll 位于同一文件夹中。

编辑 3:DependencyWalker 显示缺少以下 dll:MSVCP100.DLL、MSVCR100.DLL、DWMAPI.DLL。我正在安装可再发行组件。

最佳答案

我的猜测(如果 MyWrapper.dll 是混合模式程序集):Microsoft Visual C++ 2010 Redistributable Package (x86)没有安装。您可以使用 http://www.dependencywalker.com/查找丢失的 DLL。启动 Dependencywalker 并打开 MyWrapper.dll - 您可以找到任何丢失的 DLL。

关于c# - 如何正确部署托管/非托管 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139262/

相关文章:

.net - ClickOnce 设计我们的可执行文件并显示 "Unknown Publisher"

c# - 如何将 TypeConverter 与 ConfigurationSection 一起使用?

c# - 如何始终将 PopUp 放在 WPF 中的 ToggleButton 下

java - 如何找到部署在 weblogic 服务器上的 war 文件的部署日期

c# - 如何保护接口(interface)实现?

deployment - 为什么不在星期五部署?

c# - 清除sqldatasource过滤器表达式

c# - 我怎样才能给一组控件一个工具提示,并让它顺利显示?

c# - protected 枚举在 C# 中不可能

c# - 在 Azure 云服务项目中发布内容文件