如何让 Visual Studios 构建系统了解托管 dll 的非托管依赖关系?

2023-11-23

构建托管代码时,Visual Studio 正确(并递归地)将引用的托管项目的 dll 复制到正在构建的项目的输出文件夹中。

但是,如果这些引用之一是依赖于非托管 DLL 的托管 DLL,则这些非托管 DLL 不会复制到输出文件夹,即使它们的相应项目位于同一解决方案中并被列为托管 DLL 的依赖项。

我意识到这个问题可以通过让所有项目使用相同的输出文件夹来解决。我们已经对大多数项目这样做了,但我们更喜欢将单元测试输出文件夹分开,从而导致使用具有非托管依赖项的托管 Dll 的单元测试出现上述问题。

我们现在使用的解决方案是预构建事件来复制必要的 DLL,但这会浪费时间并且容易出错,因为需要对使用托管 DLL 的每个项目重复该操作。

因此,我想知道是否有一种方法可以让构建系统了解,每当它决定复制托管 DLL 时,它应该始终复制托管 DLL 的非托管依赖项?


一种解决方法似乎是向托管 DLL 项目添加另一个节点,命名非托管 DLL 并设置生成操作 =“无”,并将复制到输出目录 =“如果较新则复制”。

编辑:对于构建 C++/CLR 项目,我认为这可行:

添加节点,并将其构建工具设置为自定义构建工具。然后,在“自定义构建步骤”页面中,设置Command to 复制 $(InputPath) $(OutDir)Outputs to $(输出目录)\$(输入文件名)。看起来应该可行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Visual Studios 构建系统了解托管 dll 的非托管依赖关系? 的相关文章

随机推荐

  • 如何以角度2分割字符串

    我有一个电子邮件发送场景 其中有一个 收件人 输入框 您要向其发送消息 app html
  • 无法在 Eclipse 中将库添加到 Android 项目

    我正在尝试将库添加到 eclipse 内的现有项目中 我将项目文件夹本身和库文件夹保存在桌面上标记为 ANDROID 的文件夹中 当我尝试导入 gt 现有代码到工作区 gt 选择 ANDROID 时 唯一添加的项目是应用程序本身 而不是库
  • iPhone - [NSUserDefaults standardUserDefaults] 文件存储在计算机上的哪里?

    在 iPhone 上运行应用程序时 例如 当您可以以另一种方式测试某些 GPS 或相机功能时 我在哪里可以找到并检查 NSUserDefaults 创建的文件以保存 standardUserDefaults 我正在运行 XCode 4 它位
  • 如何使用调查包计算比例?

    这只是一个非常简单的问题 但我只是无法从网络和书籍中找到合适的函数来使用 这是我从这里的一篇文章中得到的一个例子 df lt data frame sex c F M F M M M F F married c 1 1 1 1 0 0 1
  • 以编程方式检查 Windows 应用商店应用程序更新

    我实际上正在尝试找到一种方法来检查 Windows 应用商店应用程序是否有可用更新 有没有办法用 API 来做到这一点 谢谢 埃萨姆 Windows 应用商店没有任何专门用于检查更新的 API 有一个相当简单的解决方法 var packag
  • libc6:i386 和 libc6-i386 有什么区别

    我在用着Ubuntu 14 04 2 LTS n l 这里有libc我安装了 dpkg list grep libc6 ii libc6 amd64 2 19 0ubuntu6 7 amd64 Embedded GNU C Library
  • MongoDB 聚合/组/求和查询转换为 pymongo 查询

    我有一组条目goals集合看起来像这样 user adam position attacker goals 8 user bart position midfielder goals 3 user cedric position goalk
  • 如何使用 NodeJS 列出 GCS 存储桶中的目录

    I 如果您正在使用 NodeJS GCS 客户端库并想要列出存储桶中的目录 您该怎么做 首先将 NodeJS GCS 客户端库的依赖项添加到您的package json通过运行以下命令创建文件 npm i google cloud stor
  • .NET 垃圾收集器遇到麻烦。阻塞 15-40 分钟

    一些事实 我们开发了 wcf 服务 充当客户端和数据库之间的层 它是自托管的并作为 Windows 服务运行 该服务保留了多个缓存 其中最大的缓存大约为 1 2GB 总内存使用量通常约为 5 8GB 连接是双工的 使用 tcp 协议 序列化
  • eval() 不在运行时分配变量

    I use eval 将列表分配给 var eval mylist 1 2 3 但是当我运行它时 我得到了一个语法错误 它出什么问题了 如果我不能在eval 如何在运行时分配 var Use exec对于声明 gt gt gt exec l
  • 应用程序配置错误 抱歉,myapp 尚未获准在应用程序中心显示。在 Android 应用程序中共享

    当我在 Facebook 上点击我的应用程序名称时 它重定向到 https www facebook com games app id 827708240586758 并显示 应用程序配置错误抱歉 我的应用程序尚未获准在应用程序中心显示 我
  • 如何在不使用故事板的情况下创建 UICollectionView?

    我在网上找到了一些不错的 UIcollectionview 教程 http www raywenderlich com 22324 beginning uicollectionview in ios 6 part 12 http ashfu
  • AppBarLayout 以编程方式更改偏移量

    如何以编程方式更改 AppBarLayout 的偏移量 当 Activity 首次加载时 我希望 AppBarLayout 部分展开 有一定的偏移量 然后用户可以进一步展开它或折叠它 当前的行为是当 Activity 首次加载时它完全展开
  • 交换 gnuplot 中的轴

    我想知道这个有一段时间了 它可能已经在gnuplot但我一直无法在网上找到信息 当您有数据文件时 可以交换轴并将 虚拟变量 例如 x 在 gnuplot 的帮助术语中 分配给垂直轴 plot data u 1 2 x goes to hor
  • 使用事务进行rails数据库迁移

    我刚刚学习 Rails 并开始了有关数据库迁移的部分 我构建了 2 个迁移 并且都成功迁移了 向下迁移 最新的迁移 即第一个运行的迁移 由于我的代码中的拼写错误而失败 我修复了拼写错误 但此后迁移仍然失败 我发现原因是向下迁移在更改中途中止
  • Laravel 5.6 中的 url() 与 Route()

    就我而言 Laravel 5 6 中的 url 和 route 有什么区别 下面给出了两个 URI a href Create post 1 a and a href Create post 2 a 我在 web php 中定义它们如下 R
  • 为什么需要 useRef 而不是可变变量?

    我读过了useEffect 完整指南 逆流而上反应过度 该示例表明 如果我们想获取最新的count 我们可以用useRef保存可变变量 并在异步函数中获取它 function Example const count setCount use
  • Android 在回收站视图中水平自动滚动

    我在列表中有两个值 并使用回收器视图在水平列表视图中显示它们 这里我需要无限地自动滚动水平列表 我尝试使用下面的代码但没有结果 Horizo ntalScrollView 添加新视图时自动滚动到结束 请在此处查看解决方案 https git
  • 您可以在 List 中的位置 0 处插入吗?

    我需要在集合的开头插入一个对象 我的收藏是列表类型 我怎样才能做到这一点 当然可以 例如一个通用的字符串列表 List
  • 如何让 Visual Studios 构建系统了解托管 dll 的非托管依赖关系?

    构建托管代码时 Visual Studio 正确 并递归地 将引用的托管项目的 dll 复制到正在构建的项目的输出文件夹中 但是 如果这些引用之一是依赖于非托管 DLL 的托管 DLL 则这些非托管 DLL 不会复制到输出文件夹 即使它们的