2017-12-20 30 views
0

は、私は他の.NETアセンブリ用とネイティブコードのCOMコンポーネントとして、.NETの標準2.0ライブラリとして使用したいC#プロジェクトを持っています。私は完全な.NET Frameworkの対象とするとき、私はうまくCOMオブジェクトを作成することもできますが、私は.NETの標準をターゲットに、新しいプロジェクトを作成したとき、私はそれを登録しようとしたとき、私はこのエラーを得た:ます。regasm netstandard DLL

regasm /codebase /tlb MyLib.dll 

ます。regasmを:エラーRA0000は:「netstandardバージョン= 2.0.0.0、文化=中立、なPublicKeyToken = cc7b13ffcd2ddd51」ファイルまたはアセンブリをロードできませんでしたまたはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。

.NET StandardとCOMの両方と互換性のあるDLLを作成して登録するにはどうすればよいですか?

+0

私は問題を再現することはできません。私は最初から.netstandard ClassLibraryを構築し、 'C実行する場合:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ます。regasmたClassLibrary1.dll/TLB/codebase'を、それが正常に動作します。私はVS 201715.5.2(最新)を持っています。 –

+1

Regasm.exeはGAC内で依存アセンブリを検索します。それが存在することを確認します.C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ netstandard \ v4.0_2.0.0.0____c7b13ffcd2ddd51ディレクトリにあります。必要に応じて.NET 4.7.1にアップデートしてください。 –

答えて

0

.NET 4.7.1がインストールされていることを確認してください。それでも、Visual StudioはNuGetパッケージを出力ディレクトリにコピーしないので、同様の「ファイルやアセンブリをロードできませんでした」というエラーが表示されることがあります。

あなたは、単一のプロジェクトが、2つのDLLと一緒に暮らすことができる場合は、これが代替である:あなたの.csprojでは、TargetFramework行を削除して、例えば、あなたのコードが必要とするものに応じて、複数のターゲットに置き換えます

<TargetFrameworks>netstandard2.0;net461</TargetFrameworks> 

そして、COMが使用すると、.NETで使用するためにnetstandard2.0ためnet461のDLLを使用します。

+0

.NET 4.7.1へのポインタのHans Passantに感謝します。 –

関連する問題