17

C#プロジェクトでは、COMオブジェクトを指す[参照の追加]セットアップを介してCOMオブジェクトへの参照を追加します。これにより、IDEは相互運用機能アセンブリを自動生成します。したがって、これは問題ありませんが、.net 3.5 SP1、別名CLR 2.0に基づいて構築しており、生成された相互運用機能は4.0 CLRを使用しているため、互換性がありません。これを防ぐ方法はありますか?

他のオプションは、/referencesパラメーターでtlbimp.exeを使用するようにビルドスクリプトを構成することだと思いますか?mscorlib v2.0を指すには?

とにかく、これを許可するフラグがどこかにあることを望んでいます。

4

6 に答える 6

21

私はまさにこの問題に遭遇しました。私が見つけた解決策は、CLR 2を使用した%ProgramFiles%\ Microsoft SDKs \ Windows \ v6.0A\binにある.NetFrameworkSDK(またはWindows Platform SDK?)のバージョン3.5のtlbimpを使用することでした。

また、VSは最初のタイプライブラリのみを使用するため、インポートしたexeファイルから正しいタイプライブラリを取得するには、この情報が必要であることがわかりました。

「複数のタイプライブラリを含むモジュールからタイプライブラリをインポートするときに、オプションでリソースIDをタイプライブラリファイルに追加できます。」

tlbimp MyModule.dll \ 1

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

于 2010-05-06T10:38:31.503 に答える
14

この問題の解決策は、2.0.NETランタイムバージョンで実行するようにtlbimp.exeを構成することです。

  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実行可能ファイルを実行します。

于 2012-05-04T14:26:50.303 に答える
5

ビルドイベントを使用している場合は、次のことを試してください。

"$(SDK35ToolsPath)tlbimp" tlbimp arguments

$(SDK35ToolsPath)はC:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A\Binを指します

また、4.0を参照する場合、$(SDK40ToolsPath)は、C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX4.0Toolsを指すマクロです。

VS 2010コマンドラインでは、「wheretlbimp」は最初にNETFX4.0Toolsフォルダーのtlbimp.exeを表示します。したがって、3.5 tlbimp.exeには$(SDK35ToolsPath)が必要です。

于 2012-06-25T21:47:12.993 に答える
2

私はまったく同じ問題を抱えていましたが、tlbimp.exeのv2.0を使用しても、4.0dllを取得します。これは機能しません。
誰かがこれに遭遇した場合に備えて、私はより簡単な解決策に行き着きました:
dllをzippy32に登録し(管理者として実行することを確認してください。そうしないとエラーが発生します)、プロジェクトに参照を追加すると、 [COM]タブのdll。
チャームのように働いた!

アプリケーションと一緒に出荷する相互運用DLLを作成する場合を除いて、tlbimp.exeルートを把握する必要があります。

于 2010-10-26T19:01:19.350 に答える
1

私(Visual Studio 2013)にとっては、適切なTlbImp実行可能ファイルを使用するだけでした。

デフォルトで使用しているものを見つけます。

where tlbimp

私にとってはどちらでしたか

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

代わりに、たとえば、下位バージョンのものを使用してください

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

これにより、.Net 2アセンブリが作成されたため、構成ファイルを編集する必要はありません。exeでCorFlagsを使用して、使用する.Netバージョンを判別できます。または、出力にCorflagsを使用することもできます。

于 2016-09-12T07:23:11.313 に答える
0

とにかく走れ

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

相互運用ライブラリ.Netバージョン2.0を生成するには

于 2013-06-07T08:39:24.820 に答える