在两个项目之间共享包的最佳实践?

时间:2018-04-25 22:49:11

标签: c# .net

我知道有很多人使用两个项目AppName.APIAppName.Common。当两个项目都需要来自同一个包的类时会发生什么。

在我看来,我有两个选项,创建另一个项目(AppName)并在AppName.API和{{1}}上引用该项目,或者只是通过Nuget将包添加到两个项目中。

这是最佳做法?我有没有这样做,有没有我错过的选项?我是编程的初学者,只是寻找一些有关高级主题的指导。

非常感谢。

3 个答案:

答案 0 :(得分:0)

NuGet是为包管理而创建的,Visual Studio为您处理包管理。 "最佳实践"在我看来,这个问题是主观的。我建议您将两个项目添加到解决方案中。然后,右键单击解决方案资源管理器中的解决方案,并选择Manage NuGet Packages for Solution菜单选项。

Manage NuGet Packages for Solution...

然后,从软件包管理器中,将软件包安装到解决方案的两个项目中。当您将此解决方案从一台机器移动到另一台机器,或者其他人在其上工作时,他们可以简单地恢复软件包以安装依赖项。您的包将存储在解决方案级别的公共文件夹中。

Common packages folder

答案 1 :(得分:0)

只需通过Nuget将包添加到两个项目中。传递性参考方法(依赖于Common仅用于依赖)很难,第二个你有3个项目,其中两个需要一个依赖,但第三个没有,此时你引入了一个无意义的依赖。

不要过度复杂化包管理或项目布局;总是保持简单,或者他们(根据经验)会随着你的规模而妨碍你。

编辑:你提到你是编程新手。你并不总是需要X.Impl和X.Api(也不是简单地拥有X),直到你知道为什么你可能需要它们,它才能最好地保持简单。您作为新程序员的目标很可能是学习编程。如果你的项目结构过于复杂,那么应用程序架构,你会浪费时间来争论与学习,编程。专注于尽可能少编写代码,尽可能少抽象,并尽可能少地创建csprojs(理想情况下为1)。

答案 2 :(得分:0)

我同意Nuget最适合包管理。但IMO并不是最好使用它,如果它不是一个通用的包,并没有被许多团队和项目使用。

为了您的目的,我觉得使用公共类库并在两个项目中引用它都能很好地工作,并使用远程包来调整调试问题。