2

我公司開發的最小(不MapPoint的對象庫,因爲它是一個測試)插件爲微軟的MapPoint使用Visual Studio 2010,C#編寫。外接MapPoint的工作在某些機器上,而不是其他一些

使用安裝項目,我可以在運行MapPoint 2010或2011的某些PC上安裝我的加載項,但在其他安裝上沒有任何影響。

這似乎是成功完成,但是當我打開MapPoint外接程序沒有運行;如果我打開工具> COM加載項......我發現我的加載項選中,檢查它有沒有效果,手動添加它告訴我

「C:\路徑\到\生成MyAddIn.dll」是不是有效的Office加載項。

做一些測試,我發現了問題不涉及到一定的MapPoint版本,Windows版本或平臺版本

這可能是導致加載項在某些機器上工作而不是其他某些機器上的差異?謝謝!


詳細我如何創建加載項:

  • 安裝MapPoint 2011歐洲
  • 推出的Visual Studio 2010
  • 文件>新建>項目...>共享插件 - >給項目命名>確定>只檢查微軟MapPoint>進行到底
  • 解決方案資源管理器>打開Connect.cs並編寫代碼
  • 構建溶液中所有項目(MapPoint的關閉)
  • 使用由安裝項目所產生的.msi安裝加載項在目標機器上(在已安裝的MapPoint)

回答

0

經過數小時的測試,我發現它!感謝MPSuperShape安裝文件夾內的調查:)。

Extensibility.dll是需要的,在我的加載項安裝在相同的文件夾中。在VS中創建共享加載項目時,擴展性會自動添加到引用,但不會添加到安裝程序將放在程序文件夾中的文件列表中。

因此您必須:右鍵單擊自動生成的安裝項目>添加>程序集> .NET>擴展性>確定。建立,安裝,你已經得到它!我添加了如果你使用MapPoint對象庫(如果你不是像我的測試外接程序那樣做的話),你需要以類似的方式添加Interop.MapPoint.dll:右鍵單擊auto-生成的安裝項目>添加>程序集...>瀏覽>從您的bin \ Debug或obj \ Debug文件夾中選取這樣的DLL到您的主項目中。

爲什麼某些機器上不需要Extensibility.dll?

因爲如果您有Microsoft Office 2007或更高版本(正如我所看到的)它已經存在(在C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies中),並以某種方式在您運行MapPoint時加載它。

1

是我寫了Late Binding文章,並認爲它不是使用MapPoint的最佳方式,但有時您必須使用它。

創建加載項時,您不應該訪問MapPointControl。您只能訪問對象模型。除了任何API差異,如果您參考2006年或更高版本,它應該適用於所有後續版本。 IE瀏覽器。您的2010年建立的加載項應與2011年一起工作。

沒有一個有效的辦公室加載項錯誤是鈍的,但實際上這是由位於MapPoint和您的.NET加載項之間的墊片造成的。 shim讓你的.NET DLL看起來像一個COM加載項。

+0

+1感謝您的幫助,但是現在我改變了我的問題,因爲我的測試顯示它不是MapPoint版本的問題,因此您的答案不符合主題...... :(我也找到了解決方案,並且我現在發佈它,我感謝你的加載項(!),[MPSuperShape](http://www.mpsupershape.com),通過它包含的DLL進行查看,再次感謝! – bluish 2012-07-18 15:50:52

相關問題