2012-10-10 72 views
3

我有一個解決方案,其中包含Register for COM Interop已檢查的多個項目。註冊COM Interop始終在Visual Studio 2012中運行

我有一個Visual Basic 6項目,它引用了生成的TLB。 VB6的一個問題是當它引用一個dll/tlb時,它會對該文件進行鎖定。

使用Visual Studio 2010,除非我正在進行重建或對這些互操作項目中的一個進行了更改,否則我可以構建/運行解決方案(在打開VB6項目的情況下),而不用吠叫一個或多個組件被鎖定。

但是,即使在沒有任何變化的簡單構建中使用Visual Studio 2012,顯然它總是會發生regasm,這使我無法調試我的VB6項目。

這是新的功能運行regasm的構建東西,我可以關閉?

編輯:請允許我以簡化:

  • 使用Visual Studio 2010,我打Build-->Build Solution並檢查輸出的我的組件標記爲Register for COM Interop和文件沒有改變之一。
  • 使用Visual Studio 2012,我做Build-->Build Solution並檢查相同的程序集,它已被更新,並且每當我點擊Build Solution時都這樣做。

我想在Visual Studio 2012的行爲的工作一樣,它在2010年

編輯做了(再次): 我張貼這Microsoft Connect。如果有人在那裏回答或發佈解決方法,我會敦促他們在此發佈答案。

+0

我覺得這很令人驚訝,因爲VB6總是保持對文件的鎖定。我不能重新編譯我的VS2010項目,如果我有一個VB6應用程序打開引用2010年項目 –

+0

@MattWilko:正如我所說,在VS2010中,我不能讓VB6打開,如果我**重建**,但如果它只是**建立**,它的作品。 –

+0

你有沒有試過在微軟的[Connect](http://connect.microsoft.com)網站上報告這個bug? –

回答

0

運行VB6和VS20XX時,我總是遇到這樣的問題,但我總是重建。我的建議是停止使用VB6進行測試。我發現簡單地創建一個測試項目並在我的.NET代碼中使用.NET進行所有測試變得容易得多。這隻需要少量的設置,但在我看來這是非常值得的。

我知道這不是您的具體問題的答案,但它提供了一個替代方案。就你所描述的問題而言,我不能重複行爲上的改變。我只用VS201X打開,完整的解決方案重建,打開VB6並添加對公開的COM DLL的引用。我沒有注意到任何意外。

  1. 構建工作得很好,只要我沒有在COM DLL
  2. 建造改變什麼,如果我改變了COM DLL的代碼,該文件被鎖定
  3. 重建失敗的文件被鎖定
  4. 失敗
+0

感謝您的建議。不幸的是,不使用VB6進行調試不是問題,因爲C#代碼和VB6代碼之間存在相互依賴關係 - 不一定是循環引用,而是更偏向於橢圓。我更新了我的問題(希望),以澄清根本問題是什麼。 –

相關問題