2010-04-17 124 views
17

在C#項目中,我們通過添加引用設置指向一個COM對象來添加對COM對象的引用,這會導致IDE自動生成互操作程序集。所以這很好,但是我們正在基於.net 3.5 SP1(又名CLR 2.0)構建,生成的interop使用4.0 CLR,因此它們不兼容。有沒有辦法來防止這種情況?Visual Studio 2010,TlbImp在2.0項目中生成.net 4.0 interops

我假設另一個選項是配置我們的構建腳本嘗試使用tlbimp.exe和/ references參數?指向mscorlib v2.0?

無論如何,我希望有一個標誌某處允許這個。

回答

20

我遇到了這個問題。我發現的解決方案是使用位於使用CLR 2的%ProgramFiles%\ Microsoft SDKs \ Windows \ v6.0A \ bin中的.Net Framework SDK(或Windows Platform SDK?)中的tlbimp 3.5版。

I也發現我需要這個信息從我導入的exe文件中獲取正確的類型庫,因爲VS只使用第一個類型庫:

「資源ID可以選擇在導入從包含多個類型庫的模塊中鍵入庫「。

TLBIMP MyModule.dll \ 1

http://msdn.microsoft.com/en-us/library/tt0cf3sx%28VS.80%29.aspx

2

我有同樣的確切問題,但即使tlbimp.exe是V2.0版,我仍然獲得了4.0的dll,這是行不通的。
我最終得到了一個更簡單的解決方案,以防有人遇到這個問題:
註冊與regsvr32 DLL(確保你運行管理員,否則你會得到一個錯誤),然後當在項目中添加引用,你會在COM選項卡中找到你的dll。
工作就像一個魅力!

除非您想創建interop dll以將其與您的應用程序一起發貨,那麼您需要找出tlbimp.exe路徑。

14

問題的解決方案是將tlbimp.exe配置爲在2.0 .NET運行時版本下運行。

  1. 轉到C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin並打開tlbimp.exe.config文件。
  2. 添加以下行文件中的配置部分:

    <startup> 
        <supportedRuntime version="v2.0.50727"/> 
    </startup> 
    
  3. 保存文件,然後運行tlbimp.exe是可執行文件,你通常會。

+2

救了我一天!謝謝! – EdsonF 2013-09-17 14:51:27

+0

這不適用於Windows 10版本的SDK/tlbimp,fwiw。它給出了關於無效並排配置的錯誤。否則,很好的答案! – 2017-02-05 01:28:22

5

如果您使用生成事件,試試這個:

"$(SDK35ToolsPath)tlbimp" tlbimp arguments 

$(SDK35ToolsPath)指向C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v7.0A \ BIN

如果您想引用4.0,則$(SDK40ToolsPath)是指向C:\ Program Files(x86)\ Microsoft SDK \ Windows \ v7.0A \ Bin \ NETFX 4.0工具的宏。

在VS 2010的命令行 「其中TLBIMP」 在NETFX 4.0工具將顯示tlbimp.exe是第一個文件夾中。因此,我們需要$(SDK35ToolsPath)3.5 tlbimp.exe是。

0

只要運行

C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\TlbImp.exe 

要生成一個互操作性展示庫.NET版本2.0

1

對我(的Visual Studio 2013),它只是一個使用權TLBIMP可執行文件的問題。

找出你默認情況下使用一個:這對我來說是

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\TlbImp.exe

而是使用一個從低版本

where tlbimp

,例如

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\tlbimp

這就產生了淨2組件對我來說,沒有必要編輯配置文件。您可以在exe上使用CorFlags來確定它使用的.Net版本。或者你可以在你的輸出中使用Corflags。

相關問題