gpt4 book ai didi

c# - Mono XBuild 发布 MVC 站点

转载 作者:太空狗 更新时间:2023-10-29 21:23:18 25 4
gpt4 key购买 nike

我已经在 Ubuntu 中完美运行了 Monoserve 和 Nginx,但是我仍然需要使用 MSBuild 在 Windows 机器上本地发布网站,然后将文件复制过来。

我最好有一个 Linux CI 服务器来执行此操作,而不是使用 XBuild,但是我只能让它将项目构建到 .dll 中,如何使用 js、css、 View 等发布和部署它?

最佳答案

通常“构建 dll”部分是最难的部分。如果你已经解决了这个问题,那么你就成功了 80%。另一半是发布内容。在最基本的方面,您将一部分文件从源目录复制到网站文件夹。 MSDeploy 是微软对此的回答,它太复杂了。我构建了一个执行此操作的 NAnt 任务,尽管这也不适用于您的特定场景。但是,一般方法可以:

  1. 抓取 sln 文件以查找 Web 项目。是什么造就了 Web 项目? csproj 文件中的技术指导或 sln 文件中的项目类型 ID。我作弊并将其定义为“目标文件夹包含一个 web.config 文件”。如果您的解决方案中只有一个网站项目,则可以跳过此步骤,直接对 .csproj 文件进行硬编码。

  2. 抓取 csproj 文件寻找 <Content Include="some\file.ext" />节点。 XPath 可以做到这一点,Linq to XML 也可以做到。这会为您提供所有 .aspx、.cshtml、.js、.css、.png、.config 等,同时小心地留下所有 .cs 文件。您需要在 .csproj 文件的路径前加上前缀以获取真正的原始文件位置,并且您希望确保在目标位置保留文件夹结构。但与收集文件列表相比,这是微不足道的。

  3. 现在您已获得文件列表,循环遍历它,从源文件夹复制到目标文件夹。 (您可能想先清空目标文件夹,或者之后删除以前部署的额外文件。我发现前者更容易。)csproj 文件抓取唯一没有给您的是 bin 文件夹内容,但这很简单:复制bin 文件夹的所有内容。 :D(关于是否复制 .pdb 文件存在良性争论,但我同意。)

形成执行上述 3 个步骤的脚本,然后从 XBuild 任务调用它或从 CI 进程调用 XBuild 和此脚本。噗。你有一个部署目标。编码愉快!

关于c# - Mono XBuild 发布 MVC 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com