向托管控制台应用程序添加本机DLL路径

本文关键字:本机 DLL 路径 添加 应用程序 控制台 | 更新日期: 2023-09-27 17:51:11

我有VS2010解决方案与3个项目:

  1. 本地(c++) DLL
  2. 使用本机DLL的托管(c#) DLL
  3. 使用托管DLL的托管(c#)控制台应用程序

我可以将托管DLL设置为控制台应用程序的引用,但我不能将本机DLL设置为这样的引用。

要在VS2010中运行控制台应用程序而不会崩溃,我必须将本机DLL复制到.exe文件夹。

我有两个问题:
  1. 我如何将本机DLL添加到DLL搜索路径,以便我不必做手动复制?
  2. 我怎样才能做到这一点,使每个配置(调试/发布)采取正确的DLL版本?

更详细的解决方案 -由于Tilak的答案:
以下是基于Tilak的回复的更多新手友好的细节:

  1. 将本机DLL作为文件(添加现有文件…)添加到托管控制台项目。
  2. 在项目属性窗格中,将"Build Action"设置为"Content",将"Copy to Output Directory"设置为"Copy if newer"或"Copy always"。
  3. 关闭解决方案或VS2010。
  4. 在文本编辑器中打开托管项目.csproj文件,找到包含本机DLL名称的<ItemGroup>(这是在第1步添加文件时创建的)。我们将在那里进行一些小更改:
    1. 对于Debug版本,使用<ItemGroup Condition="'$(DefineConstants)' == 'DEBUG;TRACE' ">代替<ItemGroup>,并输入Debug DLL的路径。
    2. 复制发布版本的条目,使用<ItemGroup Condition="'$(DefineConstants)' != 'DEBUG;TRACE' ">代替<ItemGroup>并输入发布 DLL的路径。
  5. 保存文件并重新打开VS2010。现在依赖项应该已经就位了。

向托管控制台应用程序添加本机DLL路径

您可以在构建事件后复制文件,

添加文件作为资源。

我怎样才能做到这一点,使每个配置(调试/发布)采取正确的DLL版本?

你可以在build事件后使用$(ConfigurationName)来找到Debug/Release模式。因此,您可以参考这些库。

如果您使用资源方法,您必须修改项目文件以基于调试/发布模式进行复制。详见此处