如何添加外部本机依赖dll
本文关键字:外部 本机 依赖 dll 添加 何添加 | 更新日期: 2023-09-27 18:12:24
我有两个项目。第一个是Windows窗体应用程序项目,第二个是类库项目。Сlass库项目与FANN一起工作。Windows窗体是启动项目。
我应该有Fann.Net.dll和fanndoublet.dll与FANN一起工作。我下载了这些库,并将它们放在lib文件夹中,位于解决方案的根目录。
我将Fann.Net.dll作为外部dll添加到类库项目中。我编译了这个项目。我得到一个错误,说"无法加载DLL ' fanndoublet . DLL '。我通过将fanndoublet .dll添加到文件夹Windows_Forms_Application'bin'Debug来修复此错误。
我认为这是一个糟糕的解决方案,因为我使用的是git,每次你都需要将dll转移到新工作场所的这个文件夹。
真诚,丹尼斯。
你可以试试:
- 添加/现有条目,而不是添加参考。
- 使用Add As Link.
- 确保项目将被复制到构建文件夹中。在VS中的库属性中,将Build Action设置为Content,并将Copy到Output Directory设置为Copy if Newer。
- 。重建和测试。
链接建议http://social.msdn.microsoft.com/Forums/en-US/1b1b316a-8648-4243-a651-84de51fd2508/reference-native-dll-from-managed-c-project?forum=vssmartdevicesvbcs
您可以添加本地dll作为链接项,并使用"Copy if newer"。
原生dll的问题是,有时您会希望根据项目的配置(调试/发布或平台)使用不同的dll。
您可以编辑项目的.csproj文件,并有条件地链接本地dll文件:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
<Content Include="..'..'..'..'..'bin'Win32'Release'fanndoubleMT.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
<Content Include="..'..'..'..'..'bin'Win32'Debug'fanndoubleMT_d.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<Content Include="..'..'..'..'..'bin'x64'Debug'fanndoubleMT_d.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<Content Include="..'..'..'..'..'bin'x64'Release'fanndoubleMT.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
注意复制选项被设置为PreserveNewest意思是"如果更新就复制"
梁编写的上述解决方案仅适用于平面工程结构!你可能想把你的解决方案中的所有dll组织到一个名为"dependencies"的文件夹中。但是要注意,文件是相对于解决方案资源管理器中的项目结构进行复制的。(使用Visual Studio 2015测试)
- 在解决方案资源管理器中创建文件夹依赖项
- 添加/现有条目,而不是添加参考。
- 使用Add As Link.
- 在VS的库属性中,将Build Action设置为Content,并将Copy到Output Directory以Copy if Newer.
Your Project
- class1.cs
- Dependencies'Fann.Net.dll
- Dependencies'fanndoubleMT.dll
添加post - build步骤:
xcopy "$(TargetDir)'Dependencies" "$(TargetDir)" /s /e /h /Y
此解决方案将添加文件到项目和创建构建后步骤相结合,具有以下优点:
- 项目组织良好
- 如果有人在解决方案资源管理器中添加了新的依赖项,则无需修改构建后步骤,
- 如果您使用subversion,它将重置存储库中锁定文件的只读标志
无法向非托管dll '添加引用'。一种解决方案是在Windows窗体项目中添加构建后事件。xcopy .'lib' fanndoublet .dll $(TargetPath)构建后事件还可以执行.cmd或.bat文件
您仍然需要托管程序集的引用'Fann.Net.dll'
如果dll不在项目bin文件中,您应该允许复制dll。
-
右键单击dll
-
单击"属性"
-
如果Copy to Output Directory为Do not Copy ,则选择Copy always
-
重建项目。
在我的例子中,我必须单击程序集选项卡中的浏览按钮来查找我的dll。
- 右键单击你的项目
- 选择添加,然后选择引用…
- 在参考管理器窗口中单击Browse…(位于底部)。
- 找到你的。dll然后按Add。