向托管控制台应用程序添加本机DLL路径
本文关键字:本机 DLL 路径 添加 应用程序 控制台 | 更新日期: 2023-09-27 17:51:11
我有VS2010解决方案与3个项目:
- 本地(c++) DLL
- 使用本机DLL的托管(c#) DLL
- 使用托管DLL的托管(c#)控制台应用程序
我可以将托管DLL设置为控制台应用程序的引用,但我不能将本机DLL设置为这样的引用。
要在VS2010中运行控制台应用程序而不会崩溃,我必须将本机DLL复制到.exe文件夹。
我有两个问题:- 我如何将本机DLL添加到DLL搜索路径,以便我不必做手动复制?
- 我怎样才能做到这一点,使每个配置(调试/发布)采取正确的DLL版本?
更详细的解决方案 -由于Tilak的答案:
以下是基于Tilak的回复的更多新手友好的细节:
- 将本机DLL作为文件(添加现有文件…)添加到托管控制台项目。 在项目属性窗格中,将"Build Action"设置为"Content",将"Copy to Output Directory"设置为"Copy if newer"或"Copy always"。
- 关闭解决方案或VS2010。
- 在文本编辑器中打开托管项目
.csproj
文件,找到包含本机DLL名称的<ItemGroup>
(这是在第1步添加文件时创建的)。我们将在那里进行一些小更改:- 对于Debug版本,使用
<ItemGroup Condition="'$(DefineConstants)' == 'DEBUG;TRACE' ">
代替<ItemGroup>
,并输入Debug DLL的路径。 - 复制发布版本的条目,使用
<ItemGroup Condition="'$(DefineConstants)' != 'DEBUG;TRACE' ">
代替<ItemGroup>
并输入发布 DLL的路径。
- 对于Debug版本,使用
- 保存文件并重新打开VS2010。现在依赖项应该已经就位了。
您可以在构建事件后复制文件,
或
添加文件作为资源。
我怎样才能做到这一点,使每个配置(调试/发布)采取正确的DLL版本?
你可以在build事件后使用$(ConfigurationName)
来找到Debug/Release模式。因此,您可以参考这些库。
如果您使用资源方法,您必须修改项目文件以基于调试/发布模式进行复制。详见此处