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:\

一旦我运行它,我就会收到异常错误。所以我将文件 DirectShowLib-2005.dll 也复制到了 D:\,现在它可以工作了。

问题是当我试图从那里运行我的程序时,我如何使文件 DirectShowLib-2005.dll 将永远存在于应用程序中,而无需将其复制到硬盘上的任何位置?如果它的 d:\ E:\ 或任何其他位置。

4

2 回答 2

3

当 Visual Studio 构建您的应用程序时,它会将运行它所需的所有内容放在 为目标配置(例如配置)指定的输出路径bin\Debug\中。Debug

因为 DLL 是一个共享库,所以它的代码不会嵌入到您的应用程序中,并且对它的任何引用都会在运行时解析。

如果您只是想从不同的位置运行您的应用程序,最简单的方法是从输出文件夹中复制所有内容

如果您难以将依赖项与您的代码合并,您可以使用ILMergeSmartAssembly

于 2012-10-27T09:15:49.673 回答
0

有时,某些引用可能对您的应用程序正常启动至关重要,但由于 Visual Studio 在大多数情况下不会将所有引用复制到输出文件夹,因此您需要更改引用的属性,CopyLocal以便True包含引用默认情况下在您的应用程序中。


截屏

于 2012-10-27T15:29:46.457 回答