我正在将dll
文件添加到我的引用中,并将Copy local设置为true
一切正常,在我构建应用程序后,我的dll
已添加到输出文件夹
现在我的问题是如何更改本地路径?
例如:
我的申请路径为C:\myproject
,我想将dll
放入C:\myproject\libs
如何将dll
路径设置为{applicatonpath}\libs
不 {applicationpath}?
答案 0 :(得分:1)
在Visual Studio中,你可以去Project> [项目名称]属性>参考路径 更改路径/创建文件夹,否则您想要 首先使文件夹lib新项目源代码然后使用相对地址
答案 1 :(得分:1)
在visual studio上的post-build事件中转到项目中的属性并添加:
copy "c:\pathtolibrary\bin\debug\namelibrary.dll" "$(SolutionDir)\bin\Debug\libs"
答案 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-build
和Post-build
事件的功能。顾名思义,Pre-Build
在实际构建之前发生,而Post-Build
在它之后立即发生。有关详细信息,请参阅以下链接:link1和link2。
让我们假设以下情况:
为了编译它,编译器足够聪明地确定应该首先编译项目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复制到输出文件夹。当你遇到这样的情况时,这非常方便。构建事件也可以触发很多其他事情,所以一定要检查出来。我正在使用它,至少可以节省时间。