如何在 .Net 项目中使用“lib”文件夹来构建依赖项
本文关键字:文件夹 lib 构建 依赖 Net 项目 | 更新日期: 2023-09-27 18:36:40
我需要将我的外部dll依赖项(自动映射,其他...)置于可以在构建服务器上构建它们的情况。我还想让它们进入 Subversion,以便构建服务器可以拾取它们。
所以我对整个"lib"文件夹的事情很陌生。我已经搜索了谷歌,但似乎有点假设,这里没有基本的事情。我拥有的书没有进入它。我已经很久没有导师在工作了,甚至没有人可以问我的问题......我真的很想了解我应该在这里做什么的基本原理。
我用.Net编写,使用Jenkins作为我的CI服务器(新手)和msbuild(也是新手)。我听到 svn:externals(不计算),NuGet ....
请帮忙!
假设我的解决方案称为 MySolution 并存储在 C:''MySolution 中,那么我有三个二进制文件目录,全部由源代码管理。
- 供应商第三方框架的源代码。如果需要,它们会被构建和签名(使用我的密钥),并被视为代码是我自己的。这有时是必要的,以"修复"框架中的缺陷或调试其源代码以了解其失败的原因。
- 由Nuget管理的src''packages模块(我希望将其与我的"lib"文件夹合并,但尚不支持)
- lib 编译的库,我没有源代码,也不由 nuget 管理。
(我省略了"src"、"sample"、"setup"、"文档"和"脚本"等文件夹,以保持特定于 OP 的答案)。
最近几个月,我开始在 lib 文件夹中为"包"创建自己的 nuget 包,以便我可以将它们全部迁移到"包"。 它已发布到专用 nuget 服务器。 它还简化了跨解决方案管理二进制文件的过程。
我曾经使用 extern,但它们在一段时间后带来了分支噩梦,因为您必须分支并将外部依赖项固定到。 使用 nuget 不再需要这样做。
我肯定会避免将二进制文件放在源代码管理中。最好创建自己的 nuget 存储库,其中包含首选版本的包,并使用 nuget 还原或其他"解除冻结"依赖项以进行构建的方法。我使用一个名为nuget-update的简单批处理文件.bat它只查看所有packages.config文件并获取它找到的任何依赖项。
您似乎就同一主题发布了一系列问题。我推荐NuGet,因为它变得至关重要,并且Microsoft努力推广。但是,许多旧库在那里不可用,您可能仍然需要保留一个 lib 文件夹。我的开源项目 #SNMP 就是一个很好的例子,
我尝试使用尽可能多的NuGet包,甚至加紧维护一些依赖项,例如DockPanel Suite。