好的,所以我们有一个相当大的解决方案,其中包含大约 8 个不同的项目。这些项目中的每一个都依赖于各种不同的第 3 方程序集。此解决方案位于源代码管理的主干分支中。我们还有大约 5 个不同的主干分支。
管理这些第 3 方程序集的最佳方式是什么?当您添加对程序集的引用然后单击它并查看属性窗口时,我注意到它具有程序集的硬编码路径。
例如:我们所有的分支都映射到“C:\Code\”。所以主干是“C:\Code\Trunk”,分支是“C:\Code\somebranch”。
如果我在“C:\Code\Trunk”中创建一个名为“Assemblies”的文件夹,然后将我们所有的第 3 方程序集放入该文件夹中,然后我添加对程序集的引用,该程序集引用相对吗?如果我单击添加的程序集,我会看到变灰的路径属性显示“C:\Code\Trunk\Assemblies\someassembly.dll”。
如果我从主干分支出来会怎样? “somebranch”仍然会引用“C:\Code\Trunk\Assemblies\someassembly.dll”还是会引用“C:\Code\somebranch\Assemblies\someassembly.dll”?
目前我们实际上在源代码控制中有一个名为“Assemblies”的分支,就像任何其他分支一样,它被映射到“C:\Code\”。因此,所有项目引用程序集的分支都引用“C:\Code\Assemblies\someassembly.dll”,无论项目在哪个分支,路径都是相同的。
不幸的是,这意味着您必须获得您正在使用的分支和程序集分支的最新版本才能成功构建解决方案。
总结一下:
如何添加与解决方案相关的引用? (即添加对 C:\Code\Trunk\Assemblies\someassembly.dll 的引用,并使该路径相对于添加它的项目,以便在创建分支时它引用分支的程序集文件夹而不是主干的程序集文件夹。或者这个引用已经是相对的了吗?
管理第 3 方程序集的其他推荐策略是什么?
最佳答案
现在我们有 nuget您可以将它用于所有支持的 oss 包,甚至可以创建 your own nuget packages对于其他第 3 方集会。值得一提的是openwrap作为 nuget 的替代品。
nuget 在解决方案级别存储包
所以每个分支(和主干)都会保留这些的一个版本。
我认为这是更可取的行为。例如,如果升级第 3 方,您可能希望将程序集版本分开。
过去,我使用 svn 的外部命令从内部开发的依赖项构建特定版本。没有理由不能将它们粘贴到存储库中并使用外部(或 scm 的等价物)来获得正确的版本。
我也使用构建事件将 dll 放到正确的位置。
关于c# - 你应该在哪里存储 3rd 方程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733762/