Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 在许多VS解决方案上自动化nuget更新包操作_Visual Studio_Tfs_Nuget_Nuget Package - Fatal编程技术网

Visual studio 在许多VS解决方案上自动化nuget更新包操作

Visual studio 在许多VS解决方案上自动化nuget更新包操作,visual-studio,tfs,nuget,nuget-package,Visual Studio,Tfs,Nuget,Nuget Package,我有10多个VisualStudio解决方案引用了nuget包。 当我决定在每个解决方案中更新该包时,手动打开每个解决方案、更新其包并签入对TFS的所有更改是一项非常漫长的工作。我想用一个批处理操作来“自动化”这个过程,它代表我 我通过命令行对nuget.exe做了一些实验,但它不关心TFS只读文件:它会覆盖我的文件内容,而不签出它们,因此这种方式似乎不是最好的方式 要达到这个目标还有其他建议吗?下载 您可以使用nuget update命令执行此操作。VS/TFS可以检测到更改,即使您正在VS外

我有10多个VisualStudio解决方案引用了nuget包。 当我决定在每个解决方案中更新该包时,手动打开每个解决方案、更新其包并签入对TFS的所有更改是一项非常漫长的工作。我想用一个批处理操作来“自动化”这个过程,它代表我

我通过命令行对nuget.exe做了一些实验,但它不关心TFS只读文件:它会覆盖我的文件内容,而不签出它们,因此这种方式似乎不是最好的方式

要达到这个目标还有其他建议吗?

下载


您可以使用nuget update命令执行此操作。VS/TFS可以检测到更改,即使您正在VS外部运行命令。通常,在nuget软件包更新期间,只更新“packages.config”文件

更新: 下面是一段简单的代码,用于查找给定路径下的解决方案文件并更新解决方案的nuget软件包,然后通过签入挂起的更改(您需要安装“”才能使用此commandlet)。您可以根据您的场景进行更新

param([String]$dirpath)

add-pssnapin Microsoft.TeamFoundation.PowerShell;

Get-ChildItem -Path $dirpath -Filter *.sln -Recurse | ForEach-Object { & nuget update $_.FullName 2>1;  cd $_.Directory; get-tfspendingchange; new-tfschangeset}
将代码另存为powershell脚本,并使用参数“-dirpath yoursolutionpath”从Windows powershell运行它。它将按以下方式运行:

“但它不关心TFS只读文件:它会覆盖我文件的内容而不签出它们”很抱歉,在我的描述中没有提到签入nuget软件包,因为我没有这样做。我写道,我在TFS下有10多个使用特定包的解决方案,但这并不意味着每个解决方案都将其包置于源代码控制之下。我的目的是通过命令行/powershell/don-know更新特定的包,并使visual studio&TFS能够看到更改的文件(例如csproj文件、packages.config文件等),以便我可以在TFS下签入它们。@Luca Oops,很抱歉误解了您的问题,我已经更新了我的答案。我应该在哪里使用update命令?来自powershell?你能举个小例子吗?谢谢你的回答,我想我们已经很接近解决方案了。我在运行脚本时遇到问题,因为它说nuget未被识别为cmdlet的名称。我应该以任何方式导入它吗?@Luca您需要将nuget.exe下载到您的计算机,并将其路径设置为环境路径。
param([String]$dirpath)

add-pssnapin Microsoft.TeamFoundation.PowerShell;

Get-ChildItem -Path $dirpath -Filter *.sln -Recurse | ForEach-Object { & nuget update $_.FullName 2>1;  cd $_.Directory; get-tfspendingchange; new-tfschangeset}