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

Adi*_*vit 6 .net c# dll console-application visual-studio-2010

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

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

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

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

我有两个问题:

  1. 如何将本机DLL添加到DLL搜索路径,以便我不必手动复制?
  2. 我该怎么做才能使每个配置(Debug/Release)采用正确的DLL版本?

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

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

Til*_*lak 6

您可以在post build事件中复制文件,

要么

将文件添加为资源.

我该怎么做才能使每个配置(Debug/Release)采用正确的DLL版本?

您可以$(ConfigurationName)在post build事件中使用以查找Debug/Release模式.因此,您可以参考这些库.

如果使用资源方法,则必须根据调试/发布模式修改要复制的项目文件.详情请见此处