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

C# 向托管控制台应用程序添加本机DLL路径,c#,.net,visual-studio-2010,dll,console-application,C#,.net,Visual Studio 2010,Dll,Console Application,我有3个项目的VS2010解决方案: 本机(C++)DLL 使用本机DLL的托管(C#)DLL 使用托管DLL的托管(C#)控制台应用程序 我可以将托管DLL设置为控制台应用程序的引用,但无法将本机DLL设置为此类引用 要在VS2010中运行console应用程序而不发生崩溃,我必须将本机DLL复制到.exe文件夹 我有两个问题: 如何将本机DLL添加到DLL搜索路径,以便不必手动复制 如何做到这一点,使每个配置(调试/发布)都采用正确的DLL版本 更详细的解决方案-原因: 以下是更多新手友好的

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

  • 本机(C++)DLL
  • 使用本机DLL的托管(C#)DLL
  • 使用托管DLL的托管(C#)控制台应用程序
  • 我可以将托管DLL设置为控制台应用程序的引用,但无法将本机DLL设置为此类引用

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

    我有两个问题:

  • 如何将本机DLL添加到DLL搜索路径,以便不必手动复制
  • 如何做到这一点,使每个配置(调试/发布)都采用正确的DLL版本
  • 更详细的解决方案-原因:
    以下是更多新手友好的详细信息:

  • 将本机DLL作为文件(添加现有文件…)添加到托管控制台项目中
  • 在“项目属性”窗格中,将“生成操作”设置为“内容”,将“复制到输出目录”设置为“更新时复制”或“始终复制”
  • 关闭解决方案或VS2010
  • 在文本编辑器中打开托管项目
    .csproj
    文件,找到包含本机DLL名称的
    (这是在步骤1中添加文件时创建的)。我们将在此处进行一些小更改:
  • 对于调试生成,使用
    并输入调试DLL的路径,而不是
  • 复制发布版本的条目,使用
    并输入发布DLL的路径,而不是
  • 保存文件并重新打开VS2010。依赖项现在应该就位了

  • 您可以在生成后事件中复制文件

    将文件添加为资源

    如何做到这一点,使每个配置(调试/发布)都采用正确的DLL版本

    您可以在生成后事件中使用
    $(ConfigurationName)
    ,以了解调试/发布模式。因此,你可以参考图书馆


    如果您使用的是资源方法,则必须根据调试/发布模式将项目文件修改为复制。请参阅详细信息

    我会将本机DLL作为文件放在托管DLL中,并将其属性设置为“内容”和“复制到输出目录”。您能否更具体地说明如何执行此操作(可能会将其重新表述为答案)?另外,这个方法可以用来区分调试版本和发布版本吗?是的,我知道后期版本复制选项。我希望避免它,因为它将复制的责任放在本机DLL上,而不是依赖项目上。对于每个新的依赖项目,我必须更改本机DLL构建项目配置。或者,如何将文件添加为构建依赖资源?将DLL作为文件添加到项目中。将生成操作设置为内容。在收藏夹文本编辑器中编辑项目文件,分别定义调试和发布对应的项目组。类似于为x86和x64维护不同的propertygroup。非常好,这很有效。我会用一种对新手更友好的方式来写。