【发布时间】:2021-11-25 03:38:34
【问题描述】:
我目前正在做一个没有 CI/CD 的项目,一切都是通过手动复制完成的! 我有一个 .Net 项目,它基本上在我的服务器上作为服务运行,现在使用手动复制过程我必须终止该作业,并复制新的 dll 或 exe 并重新启动,否则我会收到该过程的错误正在运行并且无法删除/替换它。
使用 Azure DevOps 管道时会发生什么?我会遇到同样的问题吗?我在网上找不到太多关于此的信息。
【问题讨论】:
-
如果您需要在映射到进程时替换可执行映像,那么谁来尝试替换它并不重要。由于相同的原因,所有尝试都会失败。现在很明显,您的 CD 程序不仅仅是复制文件。复制文件不会神奇地启动进程。由于您避免谈论那部分,因此我们确实无能为力。
-
我对我避免谈论的内容感到困惑。那么我的程序的工作方式就是我需要做的就是复制一些新的dll,之后我不需要做任何事情!因此,如果我打开了一个文本文件并使用 git 拉取该文本文件的新版本,它不会失败,它实际上会告诉用户重新加载,因为文件已更改,但如果我打开了一个文本文件并尝试手动复制该文本文件的不同版本来代替它,Windows 会抱怨“用户已打开它”或“进程正在使用中”,所以我只是想知道 Azure DevOps 管道在这种情况下会做什么跨度>
-
我怀疑 Azure DevOps 是否打开了任何文本编辑器,所以我不知道您的想法是什么。
-
这只是一个随机的例子。我只是想知道 Azure 的副本是像 windows 一样工作还是像 git 一样工作......现在我对这里发生的事情感到困惑,也许我不了解这里的基本原理
-
无论谁在复制文件,它最终都必须调用操作系统,例如 CopyFile 实现之一。 Azure、Git 或其他随机程序是否执行此操作并不重要。最终,由操作系统决定是否可以执行该操作。
标签: c# .net windows azure-devops azure-pipelines