添加对本地文件夹的引用

时间:2014-06-08 13:27:09

标签: c# visual-studio reference

我正在将dll文件添加到我的引用中,并将Copy local设置为true

一切正常,在我构建应用程序后,我的dll已添加到输出文件夹

现在我的问题是如何更改本地路径?

例如:

我的申请路径为C:\myproject,我想将dll放入C:\myproject\libs

如何将dll路径设置为{applicatonpath}\libs {applicationpath}?

3 个答案:

答案 0 :(得分:1)

在Visual Studio中,你可以去Project> [项目名称]属性>参考路径 更改路径/创建文件夹,否则您想要 首先使文件夹lib新项目源代码然后使用相对地址

答案 1 :(得分:1)

在visual studio上的post-build事件中转到项目中的属性并添加:

copy "c:\pathtolibrary\bin\debug\namelibrary.dll" "$(SolutionDir)\bin\Debug\libs"

enter image description here

答案 2 :(得分:1)

编译项目时,visual studio会将已编译和设置的所有内容本地复制到“输出文件夹”,这取决于您当前的编译配置。如果您正在调试模式进行编译,则此文件夹将为:

c:\your_solution_path\your_project_path\bin\Debug

如果您使用发布模式,则会是:

c:\your_solution_path\your_project_path\bin\Release

但是,有时我们会引用很多程序集(如果你愿意,也会引用DLL),并且这些程序集都有自己的依赖项。为了方便我们将所有内容“点击”,我们必须告诉visual studio我们希望它如何为特定的项目构建行事。

因此,正如TotPeRo所说,你应该去做项目属性并使用Pre-buildPost-build事件的功能。顾名思义,Pre-Build在实际构建之前发生,而Post-Build在它之后立即发生。有关详细信息,请参阅以下链接:link1link2

让我们假设以下情况:

  • 你有一个解决方案。
  • 该解决方案包含2个项目(我们称之为项目A和项目B)。项目A是实际的GUI。项目B只是一个帮助项目,它编译成一个DLL。
  • 假设项目B正在进行一些重型矩阵计算,因此您还必须包含一些MatLab库。 注意:只有Project B使用这些库。
  • 项目A引用项目B,以便您可以使用B中的计算信息并在A中以gui显示。

为了编译它,编译器足够聪明地确定应该首先编译项目B.如果一切都检查,项目将编译为ProjectB.dll。然后,编译器继续编译项目A.它检查所有依赖项并发现您已经编译了项目B(它是项目A的依赖项)并且它可以继续。然后将所有内容复制到输出文件夹(bin / Debug或bin / release),并且应该处于正常工作状态。

但是,在运行时,出现问题并且应用程序崩溃。您会发现,Project B没有适当的库(即MatLab库)。然后你得出结论,MatLab应该在编译时包含在bin / debug(或bin / release)文件夹中。由于MatLab库是项目B的依赖库,而不是项目A的依赖库,因此它不会被复制,因此也是例外。您可以使用上述Pre和Post-Build事件来缓解此行为。您可以告诉Visual Studio您希望它在进行编译时手动将MatLab.dll复制到输出文件夹。当你遇到这样的情况时,这非常方便。构建事件也可以触发很多其他事情,所以一定要检查出来。我正在使用它,至少可以节省时间。