我正在将我们的源代码从 Vault 移动到 TFS,不关心迁移或其他任何事情,只是在 Vault 中获取最新版本并将其添加到 TFS。
该解决方案有多个项目,每个项目至少有一个 NuGet 包。我正在尝试让 Package Restore 再次工作。它在 Vault 中有效(但不是按照预期的方式)。我的截止日期有点紧迫,一开始不起作用,所以我添加了一个预构建事件来针对每个项目的 packages.config 运行 nuget.exe。
TFS 构建服务抱怨这一点,所以我试图让它“正确”工作。
- 我已经在 Visual Studio 工具菜单中设置了该选项。
- 我已安装 NuGetEnablePackageRestore 并运行修复程序。
- 我已经验证packages目录是源代码管理目录,但是是空的。
- 我已经验证每个项目文件都包含以下内容:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
使用诊断级别详细程度进行构建表明每个项目都会评估这些属性,但 nuget.targets 中的 RestoreCommand 永远不会执行。
有什么想法吗?
我尝试通过以下链接实施解决方案:
- nuget - 包恢复不起作用 https://stackoverflow.com/questions/12856964/nuget-package-restore-not-working
-
NuGet 包恢复不起作用 https://stackoverflow.com/questions/9011889/nuget-package-restore-not-working- 我确实在那里发布了问题/评论,要求澄清......
- http://nuget.codeplex.com/workitem/1879 http://nuget.codeplex.com/workitem/1879
Edit
此外,我发现 RestoreCommand 属性正在构建期间进行评估。诊断详细程度显示:
RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:\Source\Kiersted Direct And Related\Direct\Kiersted\.nuget\nuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:\Source\Kiersted Direct And Related\Direct\Kiersted\packages"
我想通了,我在这里找到了答案:MSBuild 未从导入的项目运行 BuildDependsOn 任务 https://stackoverflow.com/questions/5951841/msbuild-not-running-builddependson-tasks-from-an-imported-project
问题(在查看诊断详细构建输出之后)是 BuildDependsOn 设置未设置。我的项目文件每个都有导入语句
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
但该语句位于 XML 树的开头。显然,Microsoft.CSharp.targets 的导入可能会干扰该导入,从而干扰 BuildDependsOn。
我的解决方案是将 nuget.targets 导入移至 Microsoft.CSharp.targets 导入下方。现在一切都构建得很漂亮。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)