C#Project,GAC,DLL

时间:2013-04-02 09:20:14

标签: c# dll gac cil openoffice-calc

我的构建应用程序出了问题。

我有一个来自here的项目修改了它并在我的程序中实现 不久,这个TableProc项目生成一个OpenOffice Calc报告,并使用OpenOffice中的一些库 - cli_basetypes(GAC / MSIL),cli_oootypes(GAC / MSIL),cli_uno(GAC / MSIL),cli_ure(GAC / MSIL),cli_uretypes(GAC / MSIL) AND cli_cppuhelper(GAC32)。

看起来像:
解决方案
..... Project1(参考TableProc)
..... Project2(参考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,   Culture = neutral,PublicKeyToken = ce2cb7e279207b9e'或其中一个   依赖。 Ann试图加载一个带有的程序   格式不正确。)

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

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

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

错误2:

  

不是有效的Win32应用程序。 (HRESULT的例外情况:   0x800700C1))

从我理解,我的应用程序,当查找DLL时,它只在GAC / MSIL中查找

请帮助,我不知道该怎么做......

3 个答案:

答案 0 :(得分:0)

请参阅有关如何将Dll安装到GAC的文章。 http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx

答案 1 :(得分:0)

史蒂夫帮助我:将你的平台从AnyCPU改为x86 - Steve Apr 2 at 9:22

答案 2 :(得分:0)

对于那些将来会发现它的人。

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

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

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

注意:AnyCPU无法正常工作。