首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitversion.exe /updateAssemblyinfo $destFileName /ensureassemblyinfo并行

Gitversion.exe /updateAssemblyinfo $destFileName /ensureassemblyinfo并行
EN

Stack Overflow用户
提问于 2022-02-20 21:06:36
回答 1查看 110关注 0票数 0

我的程序使用dotnet-gitversion.exe /updateAssemblyinfo $destFileName /ensureassemblyinfo从git标记中找到版本。它是在几个项目中作为预构建事件来完成的。当我构建整个解决方案时,有时它们并行运行,并试图同时写入$destFileName,但失败了。

这是从powershell脚本调用的,我试图锁定文件,并以某种方式将filestream传递给dotnet-gitversion,但它自dotnet-gitversion以来就没有工作,因为gitversion接受filepath而不是流。

你怎么暗示怎么解决这个问题的?

EN

回答 1

Stack Overflow用户

发布于 2022-02-21 00:12:20

根据实际解决方案的不同,这个答案可能不一样,但是如果正确理解,您有两个任务您无法控制,这意味着您不能通过某种dependsOn或其他什么方式连续地完成这些任务?

如果是这样的话,为了进行快速修复,如果可能的话,我只会丢弃一个锁文件,并检查其他进程是否使用它。如果您需要,甚至可以使用锁文件添加一些有关当前正在锁定它的任务的信息:

代码语言:javascript
复制
$LockFile = "$destfilename.lock"
#wait for lock to not be there anymore
while(Test-path $lockfile)
{
  #Waiting for lock to dissapear
  Write-host "Waiting for " + (get-content $lockfile) + " to finish.."
  start-sleep -seconds 10
}
#just to make sure system is updated on start of lockfile
start-sleep -Milliseconds 300

#create lockfile
New-Item -itemtype File -path $lockfile -value $CurrentBuildTaskName -force

#Do your thing here

Remove-item -path $lockfile -force

然而,从长远来看,我会尝试在构建“单独步骤”作为主构建的一部分时完全不执行这些步骤,而是将它们作为主构建的一部分。这也节省了时间,因为您不必在本质上执行相同的任务2-3次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71198797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档