簡體   English   中英

VS2012 Designer無法加載程序集

[英]VS2012 Designer Could Not Load Assembly

有一個C#項目的解決方案引用托管C ++庫,該庫反過來引用本機C ++庫。 C#項目包含BaseUserControl和ChildUserControl,它擴展了它。

問題是:如果在BaseUserControl的構造函數中調用來自本機C ++的代碼(通過托管C ++庫),則無法在設計器視圖中查看ChildUserControl; 也不能將BaseUserControl或ChildUserControl添加到表單中。 我們收到以下錯誤:

無法加載文件或程序集“TestLibCPP,Version = 1.0.4877.30347,Culture = neutral,PublicKeyToken = null”或其依賴項之一。 該系統找不到指定的文件。

我們該如何解決這個問題?

我已經包含了一個簡單的VS2012解決方案來演示這個問題。 這是一個基於我們在大型代碼庫中遇到的問題的人為例子,該代碼庫最近已從VS2005轉換為VS2012。

謝謝

如果您有源代碼,請嘗試使用configuraion(X86平台)重建解決方案,然后嘗試使用設計器打開ChildUserControl。

問題可能是您的本機dll構建在32位配置之上,嘗試在32位平台上構建項目

嘗試將GUITest平台目標更改為x86。 它目前是“任何CPU”。 無論你是64位還是32位,你都可以這樣做。 一定要查看配置中的平台(Debug,Release,..)

問題完全基於C ++項目的X86架構。 您的WinForms項目引用“任何CPU”。

我已經包含了一張圖片,告訴你在哪里更改它(sry它用德語,但你應該從屏幕上的位置找到:)

  1. 右鍵單擊Winforms項目並轉到設置
  2. 切換到選項卡編譯(猜測它的英文名稱)
  3. 將目標平台更改為x86
  4. 建立並享受樂趣;)

如何更改目標平台

編輯:

我剛剛看到Bounty問題是關於將所有設置設置為64位,以便實現簡單地將C ++ dll的目標設置為x64架構。

  1. 右鍵單擊任何c ++ DLL並轉到設置
  2. 在上部區域,您將看到一個名為configuration-manager的按鈕
  3. 在新打開的窗口中,只需將所有C ++ dll設置為x64。
  4. 如果它不可用於選擇只需單擊箭頭並為第二個項目創建一個新的x64(非ARM)架構,則會分解“創建新”復選框並選擇之前創建的一個。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM