C ++ / CLIラッパーをアンマネージdllに参照するUserControlをフォームに追加する際の問題

StackOverflow https://stackoverflow.com/questions/817139

質問

My UserControlは、C ++ / CLIラッパーをアンマネージC ++ dllに参照します。 UserControlをフォームに追加しようとすると、Visual Studioエラーが発生し、「コンポーネント 'userControl'の作成に失敗しました」というメッセージが表示され、System.IO.FileNotFoundExceptionが原因として発生します。

私が判断できたことから、この問題は、Visual StudioがC ++ / CLIラッパーアセンブリのアンマネージ依存関係をコピーしないことに起因しています。管理されていない依存関係をシステムPATHに配置すると、すべて正常に動作します。

これを行うより良い方法はありますか?

役に立ちましたか?

解決

最も簡単な方法は、実際の.dllをプロジェクトに含め、そのビルドアクションを" Content"としてマークし、出力ディレクトリにコピーを" Always"に設定することです。これにより、アプリケーションが実行できるように.dllが出力ディレクトリに配置され、プロジェクトにファイルを含めるだけでプロジェクトディレクトリに配置され、デザイナーが検索できるようになります。

セットアッププロジェクトにも、そのプロジェクトのコンテンツファイルのプロジェクト出力が含まれていることを確認してください。

編集

これらが機能しない場合は、プロジェクト自体の参照パスを(プロジェクトプロパティで)編集することもできますが、これがデザイナーに影響するかどうかはわかりません。そうでない場合、唯一の本当の選択肢は、システムパスディレクトリの1つに.dllを置くことです。

他のヒント

古いスレッドですが、問題が発生したばかりでプロセス中にこの質問を見つけたため、ソリューションを提出しています。

基本的に、ネイティブDLLをラッパーC ++ / CLIライブラリに遅延ロードするようにしました。ラッパーのC ++ / CLI部分には、Visual Studioおよびフレームワークで使用されるインターフェース仕様が含まれているため、ネイティブDLLは不要であるかロードされません。この質問にももう少し詳しく答えました。 https://stackoverflow.com/a/15481687/34440

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top