6

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

  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在文本编辑器中打开托管项目文件,找到<ItemGroup>包含本机 DLL 名称的文件(这是我们在步骤 1 中添加文件时创建的)。我们将在那里进行一些小的更改:
    1. 对于 Debug 构建,而不是<ItemGroup>使用<ItemGroup Condition="'$(DefineConstants)' == 'DEBUG;TRACE' ">并输入Debug DLL 的路径。
    2. 复制 Release 构建的条目,而不是<ItemGroup>使用<ItemGroup Condition="'$(DefineConstants)' != 'DEBUG;TRACE' ">并输入Release DLL 的路径。
  5. 保存文件并重新打开 VS2010。依赖关系现在应该到位。
4

1 回答 1

6

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

或者

添加文件作为资源。

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

您可以$(ConfigurationName)在构建后事件中使用来找出调试/发布模式。因此,您可以参考图书馆。

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

于 2013-01-08T21:13:16.557 回答