我使用用C#编写的Visual Studio 2010开发了一个 minimal (没有MapPoint对象库,因为它是一个测试) Microsoft MapPoint的加载项。
使用安装项目,我可以在运行MapPoint 2010或2011的某些PC上安装我的加载项,但在其他一些安装上没有任何效果。
这似乎成功完成,但是当我打开MapPoint时,加载项没有运行;如果我打开工具> COM加载项...我发现我的加载项未选中,检查它没有效果并手动添加它告诉我
' C:\路径\到\生成MyAddIn.dll'不是有效的Office加载项。
进行一些测试我发现问题与某个MapPoint版本,Windows版本或平台版本无关。
哪些可能导致加载项在某些计算机上工作而不在其他计算机上工作的差异?谢谢!
详细信息:
答案 0 :(得分:1)
是的,我写过Late Binding文章并同意它不是使用MapPoint的最佳方式,尽管有时你必须使用它。
创建加载项时,不应该访问MapPointControl。您只能访问对象模型。除非有任何API差异,如果您引用2006或更高版本,它应该适用于所有后续版本。 IE浏览器。您的2010内置插件应该适用于2011年。
这不是一个有效的办公室加载项错误,但实际上这是由MapPoint和.NET加载项之间的垫片引起的。该填充程序使您的.NET DLL看起来像COM加载项。
答案 1 :(得分:0)
经过几个小时的测试,我发现了它!感谢MPSuperShape安装文件夹中的调查:)。
在安装我的加载项的同一文件夹中需要Extensibility.dll 。在VS中创建共享加载项项目时,可扩展性会自动添加到“引用”,但不会自动添加到安装程序将放入程序文件夹的文件列表中。
因此您必须:右键单击自动生成的设置项目>添加>装配...> .NET>可扩展性>确定。构建,安装,你已经拥有它!
我补充一点,如果你使用MapPoint对象库(如果它不是像我的测试加载项那样你可能会这样做),你需要以类似的方式添加Interop.MapPoint.dll:右键单击自动生成的设置项目>添加>装配...>浏览>从主项目中的bin \ Debug或obj \ Debug文件夹中选择这样的DLL。
为什么某些机器上不需要Extensibility.dll?
因为如果您有Microsoft Office 2007或更高版本(如我所见),它已经存在(在C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies
中)并且在某种程度上它在您运行MapPoint时被加载。