【问题标题】:C# Project, GAC, DLLC# 项目、GAC、DLL
【发布时间】:2013-03-23 12:42:04
【问题描述】:

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

我有一个取自 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和 程序.exe

问题:

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

错误一:

无法加载文件或程序集 '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 中查找

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

【问题讨论】:

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

标签: c# dll gac cil openoffice-calc


【解决方案1】:

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

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

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

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

注意:AnyCPU 不工作。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多