2011-04-14 83 views
7

我們將服務器的一部分移至.net 4.0。作爲第一步,我們已經採取了Vs2010的舉措,但沒有改變任何項目的目標框架。TlbExp.exe錯誤:此程序集由運行時更新生成

作爲第二步,我將我們的服務器的特定部分移至目標4.0,以便我們可以使用某些新功能。

我在調用目標4.0的類庫DLL上的TLBexp.exe時遇到問題。該DLL還引用了很多針對2.0的DLL。

我得到錯誤:TlbExp:錯誤TX0000:無法加載文件或程序集「文件:Library.dll」或它的一個依賴項。此程序集由比當前加載的運行時更新的運行時構建,無法加載。

我打電話隨附TLBExp:微軟的SDK \的Windows \ v7.0A \ BIN \ 在我的VS2010命令提示符下調用命令我引用v4.0.30319二進制文件(如mscorlib.tlb)

在引用2.0庫的4.0 DLL上運行TLB? 如果是,那麼我爲什麼會收到此錯誤的任何原因。

下面是我使用的確切命令:「C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ tlbexp.exe」/ silent/win32/tlbreference:「C:\ Windows \ Microsoft。 NET \ Framework \ v4.0.30319 \ mscorlib.tlb「/tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.tlb」/ tlbreference:「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Windows.Forms.tlb 「/tlbreference:"C:\Windows\system32\stdole2.tlb」 C:\開發\ Library.dll

感謝

回答

18

我已經彙編目標4.0 ,它引用了另一個具有3.5目標框架的程序集。

因此,我在「構建後」步驟中遇到了同樣的錯誤。通過試驗和錯誤,我發現在此文件夾中找到的TLBExp版本:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\可以成功生成TLB文件。

HTH!

+1

非常感謝安德魯。在使用其他TLBExp時適用。我會投你的答案,但我需要15投票。 – Escristian 2011-04-19 13:32:17

+0

謝謝。 + 1我剛剛發現了這一點,它讓我在正在進行的一個項目中更靠近一步 - 或者可能只是向叢林深入一步:)。 – 2012-05-14 21:46:21

+0

將%ProgramFiles%用於交叉位。 – 2013-06-06 10:37:45

5

您可以使用以下路徑TlbExp,這將根據項目的框架版本自動被拾起:

$(TargetFrameworkSDKToolsDirectory)\tlbexp.exe 
+0

+1:實際上,這是關於VisualStudio變量/宏的非常好的提示。在可見的PreBuild/PostBuild步驟中,有一個「宏」按鈕,僅顯示可用變量的一小部分。他們都來自MSBuild層,並且有**噸**。手工剪裁.csprojs時可用,但在Pre/PostBuild步驟中,它們可以很好地擴展。 – quetzalcoatl 2013-09-10 13:21:10

相關問題