【问题标题】:Nuget.targets: error could not find a part of the pathNuget.targets:错误找不到路径的一部分
【发布时间】:2020-03-02 02:26:38
【问题描述】:

我尝试通过 TeamCity 构建网站。这是一个三个阶段的过程。前两个恢复 NuGet 包,第三个构建网站。

这也是第 3 步的构建步骤。

第一个通过,只有这个警告

Step 1/3: Restore the NuGet Packages for BalanceToBuy (NuGet Installer) (3s)
[10:22:43][Step 1/3] scan: Searching for nuget.config files
[10:22:43][scan] RepositoryPath was not extracted from NuGet.config file at C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.Config. Packages will be downloaded into default path: C:\TeamCity\buildAgent\work\a606a53a0957ca4b\packages.
[10:22:43][scan] Found packages folder: C:\TeamCity\buildAgent\work\a606a53a0957ca4b\packages
[10:22:43][scan] No repositories.config found at C:\TeamCity\buildAgent\work\a606a53a0957ca4b\packages\repositories.config
[10:22:43][scan] Failed to resolve project reference from solution file: Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "http://localhost:66", "http://localhost:66", "{72D2746B-946D-4670-AB52-C087971DB810}"

第二个通过,这些消息出现了严重错误(其中 22 个)

[10:22:51][Buy.Business\Buy.Business.csproj] RestorePackages
[10:22:51][RestorePackages] Exec
[10:22:51][Exec] "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.exe" install "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\Buy.Business\packages.config" -source ""  -NonInteractive -RequireConsent -solutionDir "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ "
[10:22:52][Exec] Restoring NuGet packages...
[10:22:52][Exec] To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
[10:22:52][Exec] EXEC 'Dapper' already has a dependency defined for 'System.Data.SqlClient'.
[10:22:52][Exec] Installing 'log4net 2.0.8'.
[10:22:52][Exec] Installing 'Dapper 1.60.6'.
[10:22:52][Exec] Successfully installed 'log4net 2.0.8'.
[10:22:52][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): 'Dapper' already has a dependency defined for 'System.Data.SqlClient'.
[10:22:52][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): The 'Newtonsoft.Json 12.0.2' package requires NuGet client version '2.12' or above, but the current NuGet version is '2.8.60717.93'.
[10:22:52][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): error MSB3073: The command ""C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.exe" install "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\BalanceToBuy.Business\packages.config" -source ""  -NonInteractive -RequireConsent -solutionDir "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ "" exited with code 1.

我通过手动转到 CLI 并更新了 NuGet.exe 从版本到版本 5 来解决了这个问题。我尝试再次运行它,但现在出现了一个奇怪的错误。

[11:46:44][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): Could not find a part of the path 'C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ \packages\EnterpriseLibrary.Common.6.0.1304.0'.
[11:46:44][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): Could not find a part of the path 'C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ \packages\FastMember.Signed.1.3.0'.
[11:46:44][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): Could not find a part of the path 'C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ \packages\EntityFramework.6.2.0'.
[11:46:44][Exec] C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.targets(100, 9): error MSB3073: The command ""C:\TeamCity\buildAgent\work\a606a53a0957ca4b\.nuget\NuGet.exe" install "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\BalanceToBuy.Utility\packages.config" -source ""  -NonInteractive -RequireConsent -solutionDir "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ "" exited with code 1.

我注意到-solutionDir "C:\TeamCity\buildAgent\work\a606a53a0957ca4b\ " 中有一个空格
怎么到那里?

【问题讨论】:

    标签: msbuild nuget teamcity


    【解决方案1】:

    This issue should have been solved in March。我很惊讶您现在会得到它,因为这意味着您在 2018 年 12 月 20 日至 2019 年 3 月 5 日之间创建了解决方案(使用 VS2010、2012 或 2013),但只是更新为更新的nuget.exe现在。无论如何,如果您想继续使用这种旧的、过时的方式进行 NuGet 还原,您需要手动编辑您的 nuget.targets 文件,正如我在 GitHub 问题中所写的那样。

    不过,我还是推荐migrating to automatic package restore。这意味着您需要在 CI 管道中执行额外的步骤才能在构建之前执行恢复,但 Visual Studio 2015 及更高版本不再具有以您的解决方案正在执行的方式添加 NuGet 恢复的功能。

    【讨论】:

    • 好的,我会尝试使用您提供的链接进行操作。这真的是我第一次使用这项技术。谢谢你。如果您发现我做错了什么,请告诉我!
    • 我知道有很多东西要学,但我们已经有了docs with quickstart guides。我建议从那里开始。
    • 感谢您的帮助。你说我需要在 CI 管道中多做一步。步骤是什么?
    • 通常人们下载 nuget.exe(或将其检入他们的存储库)并运行 nuget restore。如果您项目中的所有项目都使用PackageReference(除非您使用的是VS2017或更高版本,否则肯定不会)那么您可以使用msbuild -t:restore,或者如果所有项目都是SDK样式(.NET Core),那么您可以使用@987654329 @.
    • 我想我只能使用 NuGet 还原。我有 20 个左右的旧格式的 csproj。它们是用 Visual Studio 2012 左右创建的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多