文章編號: 818220 - 上次校閱: 2007年12月3日 - 版次: 3.11

在 ActiveX 使用者控制項中看不見表單設計工具時重新開啟現有的專案

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當您再重新開啟 Visual Studio.NET 或 Visual Studio 2005 中的現有 Windows 應用程式先前看得見的 ActiveX 使用者控制項可能不是在 Windows Form 設計工具中可見。同時,當想編譯專案可能會收到類似下列的錯誤:
型別 'AxProject1.AxTestControl' 未定義。
找不到參考的元件 'AxProject1'。找不到相依型別程式庫為.NET 組件包裝函式 'Project1'。

發生的原因

ActiveX 使用者控制項加入 Visual Studio.NET 或 Visual Studio 2005 的專案時 Visual Studio.NET 或 Visual Studio 2005 內部啟動 Windows Form ActiveX 控制項匯入工具工具 (Aximp.exe)。Aximp.exe 將轉換型別程式庫的 [ActiveX 使用者控制項,而且產生下列兩個檔案:
  • 通用語言執行階段 Proxy 對於 COM 型別。
  • ActiveX 使用者控制項的 Windows Form Proxy。
這些兩個 Proxy 檔有現有的 ActiveX 使用者控制項的相關資訊的。

當您將公用成員加入現有的 ActiveX 使用者控制項,例如事件、 方法或屬性,然後重新編譯 ActiveX 使用者控制項一或多個公用的成員會加入至介面的 ActiveX 使用者控制項。不過,通用語言執行階段 Proxy 檔不會更新以這個新的資訊。因此,在 Windows Form 設計工具中無法產生使用者控制項正確 ActiveX、 對應的 Windows Form Proxy 不是更新任一個,而發生本文 < < 徵狀 > 一 > 一節中所描述的行為。

附註在專案的 [內容] 對話方塊上, 您可以按一下 [元件] 索引標籤],然後選取 [二進位碼相容性] 選項之前重新編譯 Microsoft Visual Basic 6.0 中現有的 ActiveX 使用者控制項。在這種情況下更新通用語言執行階段 Proxy 雖然 Windows Form Proxy 不會更新。這會產生相同的徵狀。

其他可行方案

如果要解決這個問題,移除 ActiveX 使用者控制項的現有的參考],然後再一次新增更新的參考。若要執行此動作以下下列方法。

方法 1

  1. 在 [方案總管] 之下 引用項目AxProject1,] 上按一下滑鼠右鍵,然後按一下 [移除]。
  2. 引用項目Project1,] 上按一下滑鼠右鍵,然後按一下 [移除]。
  3. 在工具箱連按兩下 Project1.TestControl 若要將修改過的 ActiveX 使用者控制項加入至表單]。

    都會 ActiveX 使用者控制 Windows Form 設計工具和參考 AxProject1Project1 中請注意出現在 參考UserControlDemo
  4. 在 [建置] 功能表上按一下 建置方案

    您沒有收到任何錯誤。
附註如果您使用這項因應措施,AxTestControl2,為表單中新增修改過的 ActiveX 使用者控制項,且您的表單仍有一些 AxTestControl1 與相關的程式碼。比方說下列陳述式是仍然存在,即使 AxTestControl1 不再是在表單上:

Visual Basic.NET 範例程式碼
Friend WithEvents AxTestControl1 As AxProject1.AxTestControl
Visual C#.NET 範例碼
private AxProject1.AxTestControl axTestControl1;
如果您 AxTestControl1 在其他地方使用您的程式碼您沒有明確地建立 AxProject1.AxTestControl 物件的執行個體您會先收到
'NullReferenceException'
時發生錯誤。

此外,如果您具有 ActiveX 使用者控制項的執行個體的多個表單],您必須重複先前的步驟為每個表單中。

方法 2

  1. 在 [方案總管] 之下 引用項目AxProject1,] 上按一下滑鼠右鍵,然後按一下 [移除]。
  2. 引用項目Project1,] 上按一下滑鼠右鍵,然後按一下 [移除]。
  3. 開啟 [Visual Studio.NET 或 Visual Studio 2005] 命令,然後變更 [UserControlDemo 的 bin 目錄的 [目錄路徑。
  4. 輸入下列命令,然後按下 ENTER 鍵以執行 Aximp.exe 明確地產生通用語言執行階段 Proxy 和 Windows Form Proxy:

    aximp"<FilePath > \Project1.ocx"/out:AxInterop.Project1.dll

    AxInterop.Project1.dll 和 Project1.dll 會在 Bin 目錄中產生。

    附註取代 FilePath 包含 Project1.ocx 目錄的路徑。
  5. 切換至 Visual Studio.NET 或 Visual Studio 2005。在 [專案] 功能表上按一下 [加入參考]。
  6. 在出現的 [加入參考,對話方塊按一下 [瀏覽]。
  7. 找出 AxInterop.Project1.dll 和 Project1.dll,並選取它們。
  8. 按一下 [開啟舊檔,然後按一下 [確定] 將這些參考加入至您的專案。
  9. 關閉並重新開啟 Windows Form 設計工具。

    請注意在 Windows Form 中修改過的 ActiveX 使用者控制項設計工具。

    附註不同於前一個因應措施中修改過的 ActiveX 使用者控制項仍名為 AxTestControl1。因此,是不必要的程式碼。
  10. 在 [建置] 功能表上按一下 建置方案

    您沒有收到任何錯誤。
附註這些步驟根據範例從 < 其他相關資訊 > 一節。因此,這些工作中所提及的實體可能不同於取決在您的實作您專案中實體。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

重製行為的步驟

  1. 開啟 Visual Basic 6.0,然後建立 ActiveX 控制項專案。
  2. 在 [屬性] 視窗中變更為 TestControl 的 [Name]。
  3. 在 [檢視] 功能表上按一下 [程式碼,],然後再新增下列程式碼:
    Public Sub Method1()
       MsgBox ("Method 1")
    End Sub
  4. 在 [檔案] 功能表上按一下 [製成 Project1.ocx,然後按一下 [出現在 [製成專案 資訊] 對話方塊中的 [確定]
  5. 開啟 Visual Studio.NET 或 Visual Studio 2005。建立 Windows 應用程式以使用 Visual Basic.NET、 Visual Basic 2005 或 Visual C#.NET 命名 UserControlDemo
  6. 在 Visual 的 Studio.NET 2003年按一下 新增/移除工具箱項目 在 [工具] 功能表上。

    在 Visual 的 Studio.NET 2002年按一下 自訂工具箱 在 [工具] 功能表上。


    在 Visual Studio.2005,按一下 選擇工具箱項目 在 [工具] 功能表上。
  7. 按一下 [COM 元件] 索引標籤,然後按一下 [瀏覽]
  8. 找出 Project1.ocx (在步驟 4 中建立),並選取它。
  9. 按一下 [開啟舊檔,然後按一下 [確定],將 Project1.TestControl 加入至工具箱。
  10. 在工具箱連按兩下要在表單中新增 AxTestControl1Project1.TestControl

    參考 AxProject1Project1 自動出現 引用項目] 下,對於 UserControlDemo
  11. 在 [建置] 功能表上按一下 建置方案
  12. 儲存該專案,然後結束 Visual Studio.NET 或 Visual Studio 2005。
  13. 切換至 [Visual Basic 6.0,然後將公用事件、 方法或屬性加入至 TestControl。比方說將下列程式碼附加至 TestControl
    Public Sub Method2()
       MsgBox ("Method 2")
    End Sub
  14. 按一下 [專案] 功能表 Project1 內容
  15. Project1-專案屬性 中出現的對話方塊中,按一下以選取 [元件]。
  16. 版本相容性,] 下按一下以選取 [二進位碼相容性,再按 [確定]

    附註步驟 14 到步驟 16 說明如何選取之前重新編譯 ActiveX 使用者控制項的 [二進位碼相容性] 選項。
  17. 在 [檔案] 功能表上按一下 製成 Project1.ocx
  18. 提示您取代現有的檔案時,請按一下 []。
  19. 開啟 Visual Studio.NET 或 Visual Studio 2005 及 UserControlDemo

    請注意 TestControl1 不是在 Windows Form 設計工具中可見。
  20. 在 [建置] 功能表上按一下 建置方案

    您會收到錯誤述之 < 徵狀 > 一 > 一節。

?考

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
316171? (http://support.microsoft.com/kb/316171/EN-US/ )
如需更多的資訊,請造訪下列 MSDN 網站:
Microsoft ActiveX 控制項 」 概觀
http://msdn2.microsoft.com/en-us/library/ms968501.aspx (http://msdn2.microsoft.com/en-us/library/ms968501.aspx)
匯入 Windows Form ActiveX 控制項工具 (Aximp.exe)
http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx)
執行階段可呼叫包裝函式
http://msdn2.microsoft.com/en-us/library/8bwh56xe(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/8bwh56xe(vs.71).aspx)
在 Visual Basic 的二進位碼相容性變更
http://msdn2.microsoft.com/en-us/library/a6xdzb3y(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/a6xdzb3y(vs.71).aspx)


這篇文章中的資訊適用於:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 專業版
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 2.0
關鍵字:?
kbmt kbvs2005swept kbvs2005applies kbideproject kbide kbcomctrls kbctrlcreate kbctrl kbcontrol kbcominterop kbprb KB818220 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:818220? (http://support.microsoft.com/kb/818220/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。