C# Project, GAC, DLL



我构建的应用程序有问题。

我有一个项目,从这里修改它,并实现在我的程序。
简而言之,这个TableProc项目生成一个报告到OpenOffice Calc,并使用OpenOffice中的一些库- cli_basetypes (GAC/MSIL), cli_oootypes (GAC/MSIL), cli_uno (GAC/MSIL), cli_ure (GAC/MSIL), cli_uretypes (GAC/MSIL) cli_cppuhelper (GAC32)。

的样子:
解决方案
…项目1(引用TableProc)
…项目2(引用TableProc)
…TableProc(已实现)(bin目录cli_basetypes.dll和其他库的引用)

所以,当我在调试模式VS 2010,那些DLL在目录*/bin/ -一切工作正常-报告完成。

但是当我建立我的应用程序:
1. 没有cli_basetypes, cli_oootypes和其他DLL
2. 有project1.dll, project2.dll和TableProc.dll和Program.exe

问题:

在已构建的应用程序中,它告诉我们:

错误1:

无法加载文件或程序集cli_cppuhelper, Version=1.0.14.0,文化=neutral, PublicKeyToken=ce2cb7e279207b9e'或其之一依赖关系。有人试图用an来加载程序不正确的格式。)

好的,我尝试手动将这些DLL放在我的Program.exe旁边-同样的错误。

然后我发现,当你安装Open Office时,这些库是在GAC中安装的。我看了看它们,注意到它们都安装在GAC/MSIL中,但cli_cppuhelper安装在GAC/32中。

我试图手动将cli_cppuhelper程序集从GAC/32复制到GAC/MSIL,并得到此错误:

错误2:

不是一个有效的Win32应用程序。(来自HRESULT的例外:0 x800700c1))

由此我明白了,我的应用程序,当寻找DLL时,它只在GAC/MSIL

中查找

请帮帮我,我不知道该怎么办

对于将来发现这个的人。

问题是Visual Studio中的目标平台不正确。.dll需要使用正确的位版本进行编译。

您需要将Visual Studio中的目标平台更改为:

  • 64位-> x64
  • 32位-> x86

注意:AnyCPU不工作

将您的平台从AnyCPU更改为x86。

最新更新