我有一个名为 Foundation.dll 的基本 nuget 库。
我还有另外 5 个 nuget 库,它们使用不同版本的 Foundation.dll。
一切都在一个项目中。
-
我的问题是,当我构建一个项目时,VS .Net 显然只会在 bin/debug 文件夹中放置一个 Foundation.dll。那么VS/.Net如何决定哪个nuget包的foundation.dll应该放在bin/debug文件夹中呢?是随机的吗?
-
如果我直接在项目中引用 Foundation.dll,那么它会将我的直接引用版本放入 bin/debug 文件夹中,但对于团队中的其他一些开发人员来说,它会放入旧版本。
非常可怕的是,相同的分支代码在两台不同的机器上的工作方式不同。我在 Foundation.dll 的一种方法中添加了一个参数,对于一位开发人员来说它正在工作,但对于另一位开发人员来说,相同的代码会出现编译错误。
这个问题的最终解决方案是什么?我应该在我的项目中做出什么改变?
谢谢。
这是一个困难的话题,是的,有很多因素决定将哪个版本放入 bin 文件夹。通常,编译器会自动从所有依赖项中选择最新版本。但特别是如果您的解决方案中有多个“最终”程序集(例如 exe、单元测试库),编译器有时会出错。通常,代码无论如何都能工作,但我同意,这很可怕。
实际结果可能取决于构建顺序、构建环境(无论是从命令行构建还是在 VS 内构建等)。我和我的团队很难找到解决这个问题的最佳方法。
我们发现最安全的方法是直接在项目中引用最新版本的包。这不必是可用的最新版本,而是解决方案中任何地方使用的最新版本。当然,这仅在版本向后兼容的情况下才有效。如果某个图书馆requires旧版本的依赖项,并且您无法重建该库,那么您将遇到很大的麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)