Closed. This question needs to be more
focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注
editing this post的一个问题。
4年前关闭。
Improve this question
我有一个第三方C++程序集,我需要在我的C#项目中使用它。因此,我为C++程序集编写了C++ / CLI包装器。一切都可以在我的开发机器上编译并正常运行。
但是,当我将
bin
目录的内容复制到其他计算机之一时,它崩溃了。原因是,它无法加载我的C++ / CLI-Wrapper程序集。它给出了典型的消息:
FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.
因此,我进行了一些调查:我确保找不到MyWrapperAssembly,并向
assembly resolve event添加了一个事件处理程序。在该处理程序中,我加载了MyWrapperAssembly
for reflection only。然后,我加载了所有的
referenced assemblies。 MyWrapperAssembly的仅反射加载工作。因此,我确定可以找到该文件。但是当我尝试加载它时
Assembly.LoadFrom("hiddenDirectory\MyWrapperAssembly.dll");
它因上述错误
FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.
而崩溃
由于仅反射工作有效,因此我确信C++层一定存在问题。我在开发机器和测试机器上比较了C++ Redistributable的安装版本,发现有些软件包丢失了。所以我在测试机上下载并安装了这些软件包:
Microsoft Visual C++ 2010 Redistributable Package (x86) Microsoft Visual C++ 2010 Redistributable Package (x64) 而且它没有用。然后,我测试了6台不同的PC。我的程序在3台PC上运行,而在3台PC上崩溃。唯一使PC与众不同的是
Microsoft Visual C++ 2010 Runtime
。安装后,它似乎可以工作。
但是我在互联网上找不到该软件包的安装程序。因此,我将Visual Studio 2013安装在程序崩溃的一台PC上。安装Visual Studio(以及C++运行时)后,我的程序运行。
因此,我假设我需要该C++运行时。我们的客户PC上不需要Visual Studio。因此,我需要部署C++运行时。但是问题是:
我从哪里获得Visual C++运行时? 还是有人知道我是否想念另一件事?