2011-05-05 59 views
2

我工作今天,我每天做,當我試圖建立我的項目,我得到這個錯誤:裝配誤差建築應用 - 遇到集的多個版本,

Encountered multiple versions of the assembly with GUID '00020430-0000-0000-c000-000000000046'. Try pre-importing one of these assemblies.

它說,這個問題是在文件中TlbImp位於我的應用程序的根目錄中。唯一的問題是,我沒有這樣的文件在我的項目中,據我所知從未有過。

我正在使用Visual Studio 2010的Web應用程序(不確定此信息是否有幫助,但無論如何)。

+1

這些天[微軟連接錯誤填充](http://connect.microsoft.com/VisualStudio/feedback/details/565978/tlbimp-encountered-multiple-versions-of-the-assembly-with-guid-000204ef -0000-0000-c000-000000000046)是一個死鏈接。然而,我最近再次得到了錯誤,並且我的解決方案再次運行......但這不是公認的答案。 – 2013-01-02 05:50:19

+0

謝謝你讓我知道! – gabsferreira 2013-01-03 14:43:40

回答

2

存在對

一個Microsoft connect Bug filled它說,那裏與一個COM組件的引用的問題。

This was fixed and should be available in a future release of Visual Studio.
(Note: This did not make it into SP1.)

Tlbimp is the Type Library Importer。 Visual Studio使用它來生成對添加的COM庫的引用的互操作程序集。

+0

謝謝!顯然沒有辦法解決它,但重新安裝Visual Studio或類似的東西。再次感謝。 – gabsferreira 2011-05-09 12:21:40

+1

對於那些正在閱讀此問題的人,Microsoft Connect Bug鏈接已死亡,@JeremyThompson提供了另一種可能解決此問題的解決方案。 – gabsferreira 2013-01-03 14:43:14

5

謝謝@DavRob,但它不是我正在尋找的答案。 @dev_Gabriel我設法解決它,這裏是爲我工作的步驟:

  1. 在Visual Studio中的項目
  2. 選擇屬性
  3. 右擊選擇參考選項卡。
  4. 檢查是否有任何引用來自obj \ Debug文件夾並將其刪除。
0

我有同樣的錯誤。我意識到我在兩個不同的位置引用了相同的.dll兩次。

因此,我所做的只是刪除對.dll的所有引用,並從一個位置再次添加它。

這解決了錯誤。

1

只需添加到@ JeremyThompson的迴應:

我的問題是由於引用一個COM對象,通過進入「添加引用」,並瀏覽到.exe文件的應用程序(如C:\ Program Files文件( 86)\ PROFILE \ profile.exe)。這添加了一個「Interop.Profile.dll」(顯然這取決於您試圖訪問的SDK的不同),它位於@JeremyThompson描述的obj/Debug文件夾中。

在我的具體情況下,我在兩個項目中引用了這個Interop.Profile.dll,其中一個沒有得到上述錯誤並且成功構建。我去了成功構建的項目的obj/Debug文件夾,並將Interop.Profile.dll複製到我的Solution的DLL文件夾中(這只是我創建的一個文件夾,用於將我的所有程序集保留在一個位置,但是您可以從技術上將您的COM DLL在obj/Debug文件夾以外的任何位置),然後將兩個項目的引用都更改爲指向位於我的DLL文件夾中的Interop.Profile.dll,而不是obj/Debug文件夾中的一個。

一旦我做到了這一點,我的應用程序建成(使用重建,或清潔,然後構建)。

顯然,我的情況非常具體,但希望它可以幫助那裏的人。

0

我今天剛把這個VS 2008項目遷移到VS 2013時,又有了另一個轉折。花了我一段時間才弄清楚,所以它可能會幫助別人。 我有一個包含10個左右項目的解決方案。其中一個項目是使用GUI引用舊OCX的VB。要創建所需的互操作引用,您需要將OCX拖放到Winform中,該Winform可以引入其他引用以及創建所需的AX互操作引用。所有這些interop dll都是在... \ obj \ debug \路徑中創建的。 我得到了幾個「多版本」的錯誤,但不是來自COM引用的項目,而是來自另一個引用VB項目的C#項目。 爲了擺脫這個問題,我將由VB項目創建的interop文件複製到C#項目的... \ obj \ debug \文件夾中。 這有點痛苦,因爲每次清理項目時,都需要重新複製文件,但至少現在可以使用。請注意,您無法將AxInterop移動到其他位置,並且參考文獻是以非人爲引用的方式引用它,因爲它會將事物擰緊。 感謝@crunchy給我這個想法。