2010-10-05 44 views
1

我正在玩F#編寫Visual Studio插件,我跟着一些Gabriel Culliver和Brian McNamara發佈的迴應this question的內容。EnvDTE的哪個命名空間?

當我把下面的代碼到一個.FS文件在VS 2010

namespace TestFSharpAddIn 
    open System 
    open Extensibility 
    //open EnvDTE 
    //open EnvDTE80 
    do() 

它給了我下面的錯誤,當我嘗試建立:

The namespace or module 'Extensibility' is not defined 

我添加了一個參考Extensibility.dll,所以我假設擴展性DLL中的名稱空間不是「可擴展性」。但似乎無法在對象瀏覽器中打開擴展性DLL。我在這裏錯過了很明顯的東西嗎如何找出Extensibility.dll中存在哪些名稱空間?

我也試過這與EnvDTE幾乎相同的問題。

該項目是一個修改後的C#模板(根據Brian的答案),我可以註釋掉這個.fs文件中的所有內容,並且它會生成,所以我認爲項目/解決方案本身是可以的。項目中還有第二個.fs文件,它可以很好地構建,但是當然,它不需要引用任何EnvDTE或Extensibility程序集。


編輯:

附加信息:

Extensibility.dll

版本7.0.3300.0

路徑:C:\ Program Files文件\ Common Files文件\ Microsoft共享\ MSEnv \ PublicAssemblies \ Extensibility.dll

回答

2

我不是su重新回顧你的情況,但我已經在F#中驗證了這一點。下面是我的步驟

  1. 新的F#應用程序
  2. 一個引用添加到擴展DLL

然後添加以下代碼來驗證參考。它編譯乾淨。

open Extensibility 
let x : IDTExtensibility2 = null 
printfn "foo" 

我用於擴展DLL的路徑是

C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Visual Studio工具用於Office \ PIA \ COMMON \ Extensibility.dll

+0

謝謝Jared。如果將「開放式擴展性」放入命名空間中會發生什麼?一切還好嗎? – 2010-10-05 20:42:37

+0

@Onorio是的,這也適用。 – JaredPar 2010-10-05 20:47:52

+0

@ Jared - 面臨惱人的風險 - 您擁有哪個版本的Extensibility.dll?我得到的版本(7.0.3300.0)完全位於不同的路徑中:C:\ Program Files \ Common Files \ Microsoft Shared \ MSEnv \ PublicAssemblies \ Extensibility.dll – 2010-10-05 20:53:53