0

次のように開始するこのアプリケーションがあります。

using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;
using DirectShowLib;
using System.Collections.Generic;
using Extracting_Frames;
using System.Windows.Forms;

アプリケーション自体で、参照して選択したDirectShowLib-2005.dllを追加しましたアプリケーションディレクトリからコピーするまで、すべてがうまくいきました私の場合はアプリケーションexeファイルをデバッグします:LE.exeはそれをD:\にコピーしました

実行すると、例外エラーが発生します。だから私は D:\ にファイル DirectShowLib-2005.dll もコピーし、現在は動作しています。

問題は、DirectShowLib-2005.dll ファイルをアプリケーション内に永遠に保持し、そこからプログラムを実行しようとしているときに、ハードディスク上の任意の場所にコピーする必要がないことです。d:\ E:\ またはその他の場所の場合。

4

2 に答える 2

3

Visual Studio がアプリケーションをビルドすると、アプリケーションを実行するために必要なすべてのものが 、対象となる構成 (構成など) に指定された出力パスbin\Debug\に配置されDebugます。

DLL は共有ライブラリであるため、そのコードはアプリケーションに埋め込まれず、DLL への参照は実行時に解決されます。

アプリケーションを別の場所から実行するだけの場合、最も簡単な方法は、出力フォルダーからすべてをコピーすることです。

依存関係をコードにマージするのに苦労している場合は、ILMergeまたはSmartAssemblyを使用できます。

于 2012-10-27T09:15:49.673 に答える
0

場合によっては、アプリケーションを適切に起動するために一部の参照が重要になることがありますが、ほとんどの場合、Visual Studio はすべての参照を出力フォルダーにコピーするわけではないため、参照が含まれるようにCopyLocal参照のプロパティを変更する必要があります。Trueデフォルトであなたのアプリケーションに。


スクリーンショット

于 2012-10-27T15:29:46.457 に答える