如何自动选择调试库和发布库?
Posted
技术标签:
【中文标题】如何自动选择调试库和发布库?【英文标题】:How do I select debug vs release libraries automatically? 【发布时间】:2013-03-11 14:57:35 【问题描述】:使用 MS Visual Studio 2008,我创建了一个依赖于第二个库 (helper.dll) 的 C# 库(我们称之为 main.dll)。在 main.dll 的 Debug 版本中,我设置了对 helper.dll 的 debug 版本的引用。但是当我切换到构建 main.dll 的 Release 版本时,输出文件夹仍然包含 helper.dll 的调试版本。我看不到为不同的构建类型选择不同版本的 helper.dll 的方法。在 C++ 中,我可以告诉链接器从哪个文件夹中获取其文件,但我看不到 C# 的方法。
【问题讨论】:
您实质上更改了您在 Dan Puzey 的回答中添加的评论中的问题,然后对我们的回答投了反对票,因为它们与添加的新细节不符。那是糟糕的形式。 【参考方案1】:执行此操作的典型方法是将所有项目放在一个解决方案中,并在它们之间使用项目引用。然后,当您在 Debug 中构建时,所有组件都将被构建并作为 debug 引用 - 对于 Release 也是如此。
或者,您可以为所有程序集使用单个输出文件夹,从那里引用每个二进制文件,并确保构建顺序正确 - 以便在构建 main.dll
之前将您的 helper.dll
构建到该文件夹。但是,这更容易发生故障,并且需要更多的手动维护。
【讨论】:
我真的不喜欢将我的所有项目都放在一个解决方案中,因为 main.dll 将在多个解决方案中使用。这就是我开始思考这个问题的全部原因。如果 Solution1 使用项目 Main,那么它必须使用项目 Helper。我不想那样做。我想告诉 Solution1 使用项目 Main,并让项目 Main 自动带来正确版本的项目 Helper。那好吧。这没什么大不了的,如果我想变得花哨,我最终只会让同事感到困惑。非常感谢您的回复。【参考方案2】:当你从 Debug 切换到 Release 时,Visual Studio 在输出的 bin 文件夹中从 Debug 切换到 Release。
将 main.dll 的“始终复制”属性设置为 true。这将确保它被复制到适当的输出文件夹,并始终被引用。
【讨论】:
【参考方案3】:如果在同一解决方案中同时构建第二个库helper.dll
,您可以使用项目引用而不是直接引用 .dll。然后,您可以为Release
模式设置解决方案级配置,并以这种方式在Release
模式下构建两个项目。
【讨论】:
以上是关于如何自动选择调试库和发布库?的主要内容,如果未能解决你的问题,请参考以下文章