使用git子模块时,应该在哪里放置第三方.NET dll以避免重复

我在Visual Studio 2008中有两个.NET库项目,它们都使用
MySql Connector for .NET(MySql.Data.dll).然后,这些库都由.NET命令行应用程序使用,该应用程序也使用Connector.库项目作为git子模块引入应用程序的解决方案,并由Visual Studio中的项目引用.

我正在寻找最有效的存储和引用MySql连接器库的策略.

我已经尝试将MySql.Data.dll签入所有三个项目(在其根文件夹中),当一个项目更改为更新版本的连接器DLL时,这是有问题的.虽然每个项目都有自己的dll版本,但只有一个被打包到生成的应用程序中,导致API不匹配,这很难确定.这让我摆脱了这种方式.

我已经尝试让命令行应用程序引用子模块中保存的连接器dll,但是这只消除了在这种情况下只有一个子模块而不是两个子模块时版本不匹配的可能性.

我正在考虑将dll放在需要构建或使用应用程序的所有机器的全局程序集缓存(GAC)中,但我担心没有源控件中可用的应用程序的所有依赖项.

最佳答案 我通常有一个名为extlib或dependencies的文件夹,并将所有第三方dll放在该文件夹中.这将驻留在所有三个项目的根文件夹旁边,并将作为后期构建步骤复制到bin文件夹中.

你为什么不喜欢这样的东西

main/project1
main/project2
main/project3
main/extlib

基本上是project1-3,extlib都是独立的git存储库.

点赞