繁体   English   中英

Mono XBuild发布MVC网站

[英]Mono XBuild publish MVC site

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

我希望有一个Linux CI服务器,而不是使用XBuild,但我只能将它构建到.dll中,如何使用js,css,views等发布和部署它?

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

  1. 抓取sln文件寻找Web项目。 什么是网络项目? 技术上在csproj文件中的guids或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文件夹内容,但那是蛋糕:copy bin文件夹的所有内容。 :D(关于是否复制.pdb文件有一个健康的争论,但我说是的。)

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

我希望有一个Linux CI服务器来代替使用XBuild 。好消息是你可以通过我在本文中找到的解决方法来实现这一点 以下是上述文章的摘录和解决方法链接:

构建服务器未安装Microsoft MVC(任何版本)。 但是,这很容易解决 - 如果您需要安装旧版本,可以在NuGet上的http://nuget.org/packages/Microsoft.AspNet.Mvc上找到Microsoft MVC,点击底部的旧版本该页面,您将获得有关如何安装该版本框架的说明。

希望这能让你轻松!

@DHarun的想法很棒! 我刚刚根据@Dharun的想法写了一个小脚本,希望它可以帮助别人。 https://github.com/z-ji/MonoWebPublisher

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM