2

我使用 Visual Studio 2010 为 Microsoft MapPoint 开发了一个最小的(没有 MapPoint 对象库,因为它是一个测试)插件,用 C# 编写。

通过安装项目,我可以在一些运行 MapPoint 2010 或 2011 的 PC 上安装我的加载项,但在其他一些 PC 上安装无效。

那就是它似乎成功完成了,但是当我打开 MapPoint 时,插件没有运行;如果我打开工具 > COM 加载项...我发现我的加载项未选中,检查它没有效果并手动添加告诉我

“C:\Path\to\myAddin.dll”不是有效的 Office 加载项。

做了一些测试,我发现问题与某个 MapPoint 版本、Windows 版本或平台版本无关

哪些可能是导致加载项在某些机器上工作而不在其他机器上工作的差异?谢谢!


有关我如何创建加载项的详细信息:

  • 安装 MapPoint 2011 欧洲
  • 启动 Visual Studio 2010
  • 文件>新建>项目...>共享加载项>为项目命名>确定>只检查Microsoft MapPoint>继续到最后
  • 解决方案资源管理器 > 打开 Connect.cs 并编写代码
  • 在解决方案中构建所有项目(关闭 MapPoint)
  • 使用 setup 项目生成的 .msi 在目标机器上安装插件(已经安装了 MapPoint)
4

2 回答 2

1

是的,我写了后期绑定文章并同意这不是使用 MapPoint 的最佳方式,尽管有时您必须使用它。

创建加载项时不应访问 MapPointControl。您只访问对象模型。除非有任何 API 差异,如果您引用 2006 或更高版本,它应该适用于所有后续版本。IE。您的 2010 内置插件应该可以与 2011 一起使用。

not a valid office add-in 错误是迟钝的,但实际上这是由 MapPoint 和您的 .NET 加载项之间的垫片引起的。垫片使您的 .NET DLL 看起来像一个 COM 加载项。

于 2012-07-13T14:32:58.307 回答
0

After hours of tests I found it! Thanks to an investigation inside MPSuperShape installation folder :).

Extensibility.dll is needed, in the same folder where my add-in is installed. When creating a shared add-in project in VS, Extensibility is automatically added to References, but not to the list of files that the installer will put in program folder.

Hence you have to: right click on the auto-generated setup project > Add > Assembly... > .NET > Extensibility > OK. Build, install and you've got it!

I add that, if you use MapPoint Object Library (as you probably do if it's not a test add-in like mine) you need to add Interop.MapPoint.dll in a similar way: right click on the auto-generated setup project > Add > Assembly... > Browse > pick such DLL from your bin\Debug or obj\Debug folder in your main project.

Why was Extensibility.dll not needed on some machines?

Because if you have Microsoft Office 2007 or later (as I saw) it is already present (in C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies) and in some way it is loaded when you run MapPoint.

于 2012-07-18T16:07:49.843 回答