2013-01-08 37 views
5

我有3个项目VS2010溶液:添加本地DLL路径管理控制台应用程序

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

我可以将受管DLL设置为对控制台应用程序的引用,但我无法将本机DLL设置为这样的引用。

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

我有2个问题:

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

更多详细的解决方案 - 由于Tilak's answer
以下是基于以下Tilak's reply更多新手友好的细节:

  1. 添加本地DLL的文件(添加现有文件...)来受管控制台项目。
  2. 在项目属性窗格中,将“构建操作”设置为“内容”和“复制到输出目录”,将其设置为“复制如果更新”或“始终复制”。
  3. 关闭解决方案或VS2010。
  4. 在文本编辑器中打开托管项目.csproj文件,并找到<ItemGroup>,其中包含本机DLL名称(这是我们在步骤1中添加文件时创建的)。我们会让一些小的变化有:
    1. 对于调试版本,而不是<ItemGroup>使用<ItemGroup Condition="'$(DefineConstants)' == 'DEBUG;TRACE' ">和进入路径调试 DLL。
    2. 重复发布版本的条目,而不是<ItemGroup>使用<ItemGroup Condition="'$(DefineConstants)' != 'DEBUG;TRACE' ">并输入版本 DLL的路径。
  5. 保存文件并重新打开VS2010。现在依赖应该到位。
+2

我会将本地DLL作为文件放入托管DLL中,并将其属性设置为“内容”和“复制到输出目录”。 – vcsjones

+0

你可以更具体地说明如何做到这一点(也许改为答案)?另外,这个方法可以用来区分Debug和Release版本吗? –

回答

6

您可以通过副本后生成事件的文件,

添加文件作为资源。

我该怎么做,以便每个配置(调试/发布)采用正确的DLL版本?

您可以在后期构建事件中使用$(ConfigurationName)来查找调试/发布模式。因此你可以参考这些库。

如果您正在使用资源方法,则必须根据调试/发布模式修改要复制的项目文件。查看详细信息here

+0

是的,我知道后生成的复制选项。我希望避免它,因为它将副本的责任放在本地DLL上而不是从属项目上。对于每个新的依赖项目,我必须更改本机DLL生成项目配置。 –

+0

或者,我如何将这些文件添加为依赖于构建的资源? –

+1

将dll添加到作为文件的项目。将构建操作设置为内容。在收藏夹文本编辑器中编辑项目文件,分别定义对应于调试和发布的项目组。类似于为x86和x64维护不同的属性组。 – Tilak

相关问题