Mono XBuild发布MVC站点

本文关键字:站点 MVC 发布 XBuild Mono | 更新日期: 2023-09-27 17:52:12

我已经有Monoserve和Nginx在Ubuntu上完美运行,但是我仍然需要使用MSBuild在Windows盒子上本地发布网站,然后复制文件。

最好我想有一个Linux CI服务器,这样做,而不是使用XBuild,但我只能让它构建项目成。dll,我如何发布和部署它与js, css,视图等?

Mono XBuild发布MVC站点

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

  1. 抓取sln文件查找web项目。什么是web项目?csproj文件中的技术指南或sln文件中的项目类型id。我把它定义为"目标文件夹包含一个web"。配置文件"。如果你的解决方案中只有一个网站项目,你可以跳过这一步,只硬编码.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和这个脚本。噗。你有一个部署目标。编码快乐!

最好我想有一个Linux CI服务器这样做,而不是使用XBuild好消息是,您可以使用我在本文中找到的一种变通方法来做到这一点。以下是上述文章的节选和变通链接:

构建服务器没有安装Microsoft MVC(任何版本)。然而,这很容易解决——微软MVC是可用的请登录NuGet,网址是http://nuget.org/packages/Microsoft.AspNet.Mvc要安装旧版本,请单击底部的旧版本的页面,您将获得如何安装它的说明框架的版本。

希望这对你来说很容易!

@DHarun的主意太棒了!我只是根据@Dharun的想法写了一个小脚本,希望能对其他人有所帮助。https://github.com/z-ji/MonoWebPublisher