C# 如何在整个解决方案中更新NuGet包的子集

C# 如何在整个解决方案中更新NuGet包的子集,c#,.net,nuget,C#,.net,Nuget,我希望能够通过命令行更新整个解决方案的特定NuGet包,这样我就可以将其作为构建目标内部构建过程的一部分来使用 目前,我正在使用下面的目标-它将NuGet更新限制为本地源 这有许多缺点。首先是每个项目。因此,我无法对所有项目运行一次,并更新“所有”其他项目 下一个生成过程的任何更新在下一个生成之前都不会传播。因此,如果对NuGet包文件或目标有任何后续更改,则必须运行它两次 其次是包上的错误,它无法解析依赖项(可以理解) 那么,有没有一种方法可以通过命令行(即从我可以运行的批处理文件)为每个项目

我希望能够通过命令行更新整个解决方案的特定NuGet包,这样我就可以将其作为构建目标内部构建过程的一部分来使用

目前,我正在使用下面的目标-它将NuGet更新限制为本地源

这有许多缺点。首先是每个项目。因此,我无法对所有项目运行一次,并更新“所有”其他项目

下一个生成过程的任何更新在下一个生成之前都不会传播。因此,如果对NuGet包文件或目标有任何后续更改,则必须运行它两次

其次是包上的错误,它无法解析依赖项(可以理解)

那么,有没有一种方法可以通过命令行(即从我可以运行的批处理文件)为每个项目更新特定的Nuget包列表?因此每个项目都使用特定包的最新版本

    <Target Name="Update" Condition="Exists('$(ProjectDir)packages.config')" BeforeTargets="CreateManifestResourceNames">
        <Warning Text="Warning - Updating all packages from $(NetworkNugetPath)"/>
        <Exec Command="$(ToolsPath)NuGet.exe update $(ProjectDir)packages.config -Source $(NetworkNugetPath) -FileConflictAction Overwrite -NonInteractive" IgnoreExitCode="true"/>
    </Target>


请注意,这是.Net framework项目,因此我无法使用任何新的核心功能。

如果您更新了20个NuGet软件包,但出现问题,您如何知道是哪个更新导致了问题?依赖项必须由开发人员管理和审查,而不是随意更新。在Visual Studio中,您可以管理解决方案的NuGet包。在解决方案资源管理器中,右键单击解决方案并选择“管理解决方案的NuGet软件包…”。Ian Kemp在使用它们的使用上下文中。它正在开发一个包,所以每天构建30-40次包周期。那么我们该如何解决这个问题呢。这也是为什么我声明了特定的包,即在我控制下的包。@Verno我正在寻找一个命令行选项,因为开发和构建过程与Visual studio无关。我使用classic csproj和这项工作在遗留项目上进行了测试。要获取最后一个,只需删除选项
--version
。但是你需要有csproj的名单。也许PowerShell脚本可以返回所有
.csproj
文件。