【问题标题】:How to set TFS NuGet restore to take all the needed version from sln file?如何设置 TFS NuGet 还原以从 sln 文件中获取所有需要的版本?
【发布时间】:2017-10-22 05:49:01
【问题描述】:

我正在使用 TFS 步骤来恢复我的 NuGet 包。 在 "Path to solution or packages.config" 字段中,我设置了 sln 文件的路径。 我遇到的问题是,在我的解决方案中,我有 2 个项目:

项目“A”引用“commom.package”1.1版

项目“B”引用 “commom.package” 1.3 版

在恢复步骤之后,我只在包目录中获得 1.3 版本,并且在项目“A”编译后,我可以在“bin\release”文件夹中看到它拥有 1.3 版本而不是1.1.

我该如何解决这个问题?我是否需要为解决方案中的每个项目设置恢复 - 即每个 package.config 文件?

【问题讨论】:

    标签: tfs nuget tfsbuild nuget-package nuget-package-restore


    【解决方案1】:

    nuget restore task 只是使用nuget.exe 命令来恢复包。如果在本地使用nuget.exe 命令,也会得到相同的结果。 Package.conifg 是项目级别,而不是解决方案级别。因此,如果您在这种情况下直接恢复解决方案,它只会获得一个适用于两个项目的 1.3 版本。

    但是在 VS 中,有一个选项在 Visual Studio 中构建期间自动检查丢失的包。您将在 VS 还原中同时获得 1.1 和 1.3 版本。

    要解决此问题,您必须为每个 package.config 文件设置 恢复。与恢复整个解决方案不同,您还需要在任务的 NuGet 参数中使用-PackagesDirectory

    【讨论】:

    • 嗯...我的解决方案中有大约 40 个项目,TFS 系统对每个 package.config 文件“硬编码”听起来不是一个好的解决方案。在这种情况下,我需要添加 40 个构建步骤并手动编写它们。当我编译 throw VS 时,它使用“Auto”标志。但是在为我的团队带来正式版本的 TFS 构建中它不起作用
    • @AviramFireberger 但是,这是由NuGet.exe 命令设计的。 NuGet 团队已弃用 NuGet 3.0 中的解决方案级别包。 来源链接:stackoverflow.com/questions/33352258/…。通常 1.3 版本会支持 1.1 的下级兼容性,为什么你坚持为项目“A”使用 1.1 版本
    • 感谢您的链接,我坚持将 1.1 用于项目“A”的原因是它引用了另一个 NuGet 包,该包也需要该包的 1.1 版,而 1.3 似乎没有实现第二个 NuGet 需要的类,这导致我的代码中断
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2020-08-19
    • 2023-03-04
    • 2016-01-01
    相关资源
    最近更新 更多