2010-11-26 6 views
0


私はGUIで外部C++ DLL COMコンポーネントを使用するC#でDLLを開発しています。合計で私は3つの他のコンポーネントを使用していますが、それぞれのリファレンスに対して、出力に "Interop.ComponentName.dll"ファイルが含まれています。C#DLLはInteropとAxInteropファイルを削除します

"プロパティ"ウィンドウの "ローカルコピー"設定をfalseに変更しようとしましたが、実行時にメインDLLがファイルを見つけることができないというエラーが発生します。

これらはプログラムが機能するために必要ですが、メインDLLが "../extras/Test.dll"にあるようなサブディレクトリでこれらのファイルを使用することは可能であり、Interop "../extras/TestResources/" 内のファイル

追加情報:?私は、Windows XP SP3でのVisual Studio 2008でのC#を使用していたDLLは、あなたです

おかげで、K.

答えて

0

どの相互運用。それらが標準ではない場合(つまり、対象となる.NET Frameworkディストリビューションに含まれていない場合)、Visual Studioはそれらをプロジェクトの出力に含めることができますグローバルアセンブリキャッシュに登録されています。

分散C#アプリケーションが外部DLLをどのように参照するかを検討してください。それらが.NETディストリビューションの一部であれば、ユーザーのGACに正しく登録されています。それ以外の場合は、セットアップ/デプロイメントプロジェクトによって登録されます。後者の場合は、元のプロジェクトのプロパティの[ビルド]に移動すると、出力パスのフィールドが表示されます。 Visual Studioの内部ビルドユーティリティでは、プロジェクトのビルドファイルを1つのディレクトリに出力することしかできません。

しかし、あなたが求めていることを達成する方法があります。 Visual Studioにあなたの展開を扱えるようにするよりもかなり複雑です。 MSBuild.exeを見て、スクリプトをビルドしてください。

+0

彼らは非標準の、私が作ったカップルとカップルです(GUI用)は他人によって構築されており、私は再構築にアクセスすることはできません。基本的に私が使用しているDLLファイルは、同じディレクトリまたは親ディレクトリにあります。私はそれを調べ続けていきます。 –

0

binフォルダや他の場所にないアセンブリをCLRで検索できるようにするには、app.configファイルの< codeBase>要素を使用します。

詳細は、http://msdn.microsoft.com/en-us/library/efs781xb(vs.71).aspxを参照してください。リンクされた記事から注意するため

2行:アセンブリがプライベートアセンブリの場合

  • 、コードベースの設定は、アプリケーションのディレクトリへの相対パスでなければなりません。アセンブリの場合

  • 強い名前のない、バージョンは無視され、ローダが<コードベースの最初の外観を使用している> <内部dependentAssembly>

関連する問題