0

我已经开发了一个注册到 GAC 的 .NET 程序集。我的应用程序和 4 个 Office 插件使用此程序集。

然后,我需要为我的 Office 插件提供一个 COM 接口,我的应用程序也可以使用它。我在 .net 中创建了一个新的 .dll,它公开了 COM 接口。我的办公室插件目前引用了这个 .dll。GAC 中的程序集也引用了它。

我遇到的问题是,一旦部署在目标机器上,我就无法让我的办公室插件找到 COM dll。

COM dll 没有被添加到 GAC,它只是在应用程序文件夹中自己的文件夹中。我正在使用 \codebase,我可以看到注册表中的类有一个代码库键,它们指向正确的路径。

Fuslogvw 确认它不起作用,但没有进一步帮助我。

=== Pre-bind state information ===
LOG: DisplayName = MyComConnect, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c0fb9ef9db76b1e7
(Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/MyApp/MyAppAddins/MyAppOutlook/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = OUTLOOK.EXE
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MyApp/MyAppAddins/MyAppOutlook/MyComConnect.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MyApp/MyAppAddins/MyAppOutlook/MyComConnect/MyComConnect.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MyApp/MyAppAddins/MyAppOutlook/MyComConnect.EXE.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MyApp/MyAppAddins/MyAppOutlook/MyComConnect/MyComConnect.EXE.
LOG: All probing URLs attempted and failed.

我需要如何或做什么来找出问题所在?

几点;

  1. 在开发机器上,我有一个保存了 COM .dll 的文件夹,这就是我在项目中引用的内容
  2. 在构建我的所有项目时,将此 COM .dll 复制到 bin 文件夹
  3. 我不会将 COM .dll 与我的安装项目中的每个项目一起复制。
  4. 在我的安装项目中,我只有一个包含 COM .dll 的文件夹,并使用 \codebase 注册它,我认为这意味着每个项目都会找到它。
4

0 回答 0