【发布时间】:2015-09-22 20:03:58
【问题描述】:
我已经研究了很长时间,但仍然没有找到任何令人满意的解决方案。我们有一些共享库(.csprojs),它们也相互依赖以及第 3 方 dll。我想在几个 .sln 文件中引用这些共享项目。
过去我们曾尝试使用 NuGet 来实现这一点。我们制作了所有共享组件包并有一个本地提要。然而,当我们想要更新我们的共享组件时,它经常会在更新过程中搞砸并且不可靠。它给我们带来的麻烦多于它的价值,老实说,这让我们不想将共享代码添加到我们的共享库中。
所以,现在我认为在每个解决方案中引用共享项目会更好,这很容易,但现在还有一个问题:
我们使用功能分支,共享代码不是分支的一部分。我们有一个类似于以下的结构:
/App1 /Development (Folder that just contians Main branch) /Main /Features (Folder that contains all Features) /F1 /App2 /Development /Main /Features /F1 /F2 /Shared /Development /Main
但是,如果我们对任何功能中的共享进行更改 - 并且它指向 /Shared/Development/Main 中的代码,那么它只会针对我的所有功能进行更新,并且我们不会保留共享更改的记录.
解决这些问题的正确方法是什么?有没有更好的方法在解决方案之间共享组件?
【问题讨论】:
-
简短的回答——记录共享的更改。无论如何,您都应该这样做以进行备份/安全/等。原因。其次,您是否出于某种原因将代码作为实际的“项目”共享?您不能只编译共享代码并将其作为 DLL/库共享吗?恕我直言,那将是最好的选择。
-
我可以将它作为一个 dll,但它不仅仅是每个 csproj 的单个 dll - 它还有所有的相互依赖关系和第 3 方 dll,我现在必须告诉我的应用程序解决方案项目这些也是什么.另外,我们无法在任何应用程序解决方案中轻松修改它。另外,我不确定您记录共享更改是什么意思?我们正在使用 TFS,以便保留历史记录。
-
由于这似乎是一项广泛共享的功能,您是否考虑过将其放入 GAC 中?这对解决问题有帮助吗?
-
它不仅仅是一个功能——我在谈论一大堆共享库:/Shared/Development/Main/SharedLib1 .../SharedLibr2 ../SharedLib3。我不认为将所有内容都放在 GAC 中是正确的解决方案。我正在寻找更多关于如何在实践中实际完成的示例 - 我只是找不到任何可以充分展示其他人如何处理共享库的内容。
-
在实践中,我们使用编译对象和 GAC。添加多个 DLL 作为参考仍然比添加和维护共享项目更容易。你有多少个共享库?
标签: visual-studio shared-libraries branching-and-merging csproj sln-file