首页 > 解决方案 > VSTS - 如何在不丢失 csproj 中的 $(solutiondir) 的情况下更新 Nuget 包

问题描述

问题:
我们的 VSTS 构建管道存在问题,因为我们在 csproj 中使用了 $(SolutionDir)。我们遇到的问题是,我们无法更新我们的 Nuget 包,因为无论何时更新,我们都会丢失 $(SolutionDir) 并且必须进入 csproj 并将 $(SolutionDir) 放回正确的位置。

问题:
有没有办法设置构建(或其他任何东西),以便我们不需要手动修改 csproj?我们想添加/更新一个 nuget 包,并且知道每次签入时都会在构建中正确处理它?甚至可能自动添加 $(SolutionDir) 。

标签: visual-studiotfsazure-devopsnugetazure-pipelines

解决方案


VSTS - 如何在不丢失 csproj 中的 $(solutiondir) 的情况下更新 Nuget 包

恐怕你不能做这样的事情。我们可以.csproj手动编辑以$(SolutionDir)在我们的.csproj文件中设置,但 NuGet 不支持这一点,如果您使用packages.config文件,NuGet 总是使用相对路径作为引用。

$(solutiondir)这就是添加/更新 nuget 包时nuget 覆盖的原因。并且没有这样的设置我们可以$(solutiondir)自动使用。

要解决此问题,您可以尝试使用PackageReference而不是packages.config. PackageReference不会对项目文件进行任何更改,并且包是从用户范围的位置发现的。

检查文档NuGet 现在已完全集成到 MSBuild另一个线程中以获取更多详细信息。

希望这可以帮助。


推荐阅读