我应该何时将项目添加到我的解决方案中,而不是将项目的dll添加到我的解决方案中

时间:2011-03-02 19:19:59

标签: c# visual-studio

现在我有项目A和项目B.然后有一个类库项目Z.Project Z包含A和B使用的类和方法。

我的问题是,我是否应该使用其dll将项目Z编译并添加到项目A和B中,或者将项目本身添加到A和B中?

我会在项目中将项目中的项目用于项目中的dll?

5 个答案:

答案 0 :(得分:8)

如果项目Z的代码是按照与项目A和B相同的计划构建和发布的,那么Z应该是同一解决方案的一部分。

另一方面,如果Z是一个相当稳定的库,并且有自己的发布/维护计划,您可能希望将其添加为编译参考。

您可以问自己一些简单的问题,例如必须编译每个时间A和B编译?处理A和B的开发人员是否应该能够修改Z?

答案 1 :(得分:2)

根据我的经验,做一个或另一个的最大区别是在特定项目中需要的透明度。

显然,如果您有可能以任何方式编辑项目,则需要直接访问项目。但另一方面,如果你正在调试一个问题并且你到达了一个你只有你的dll的项目,你的代码就会消失在那个dll的黑盒子里并咳出结果,不允许你逐步完成它。

最后,它通常是一种偏好。如果你有足够的信心,你不需要在调试或错误搜索时进入dll的黑盒子,并且你想要一个更干净的解决方案资源管理器,那么无论如何只需将它包含为dll。这也允许更快的编译时间,因为它不必将该特定项目编译成用于调试/发布/等的dll。如果你不介意额外的混乱(和更长的构建时间),或者需要透明度,那么我建议把它作为一个项目。

至于我个人的偏好,我倾向于不介意更长的构建时间和更混乱的解决方案资源管理器,并且更喜欢在可选项时添加项目而不是dll。

答案 2 :(得分:1)

我建议将Z与您的版本控制系统分支并将其添加为项目。这样你就能充分利用两者。您可以完全调试,并且可以编辑库,如果在其他解决方案中更新Z接口,您的A和B项目将不会受到影响。

如果您对Z进行更新,您可以以受控方式将它们与其他版本合并。

除非Z记录得非常好,否则你肯定希望在A和B上编码时导入和导出Z代码。

只有当Z很大且需要花费很长时间才能重新编译时,我更喜欢将其作为DLL包含。

答案 3 :(得分:1)

我认为如果A和B都使用Z(假设A和B在不同的解决方案中),那么你应该将Z添加为dll。这样你就可以在一个地方而不是两个地方编辑代码,你可以确定A和B使用相同版本的Z库(再次说明你在两者中都更新了dll)。)

答案 4 :(得分:1)

我远非专家,但我的一般经验法则是:

  • 如果A和B密切相关且Z主要是为了支持它们,那么让A和B都使用对Z项目的引用。
  • 如果A和B没有密切相关,则创建Z以支持A,然后发现Z对B有用,让A使用对Z项目的引用,而B使用对Z dll的引用。
  • 如果Z被创建为一个独立的库,供任何和所有可能发现它有用的项目使用,那么所有项目都使用对Z dll的引用。

我的理由是确保每个项目都与库的正确版本相关联。

您使用的源控制形式也可能是一个因素。根据整体情况和系统的功能,将Z分支到两个项目可能是一个很好的解决方案。