首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mono XBuild发布MVC站点

Mono XBuild发布MVC站点
EN

Stack Overflow用户
提问于 2013-01-13 02:23:19
回答 3查看 1.9K关注 0票数 6

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

我更希望有一个Linux服务器来做这件事,而不是使用XBuild,但是我只能让它将项目构建到.dlls中,我如何发布和部署它与js,css,视图等?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-20 10:30:08

通常,“构建dll”部分是最难的部分。如果你解决了这个问题,你就有80%的机会了。另一半是发布内容。在最基本的方面,您正在将文件的一部分从源目录复制到website文件夹。MSDeploy是微软的解决方案,但它太复杂了。我构建了一个完成此任务的NAnt任务,尽管这也不适用于您的特定场景。但是,一般的方法可以:

  1. 抓取查找web项目的sln文件。web项目是由什么构成的?从技术上讲,csproj文件中的guids或sln文件中的项目类型in。我作弊并将其定义为“目标文件夹包含一个web.config文件”。如果你的解决方案中只有一个网站项目,你可以跳过这一步,只需硬编码.csproj文件。
  2. 抓取查找<Content Include="some\file.ext" />节点的csproj文件。XPath可以做到这一点,Linq to XML也可以做到这一点。这为您提供了所有的.aspx、.cshtml、.js、.css、.png、.config等,同时小心地留下了所有的.cs文件。您需要在.csproj文件的路径前加上前缀,以获得真实的源文件位置,并希望确保将文件夹结构保留在目标位置。
  3. 现在你已经得到了文件列表,循环遍历它,从源文件夹复制到目标文件夹。(您可能希望先清空目标文件夹,或在以后清理以前部署中的额外文件。我发现前者更容易一些。)csproj文件抓取没有给你的唯一的东西是bin文件夹的内容,但那是蛋糕:复制bin文件夹的所有内容。:D (关于是否复制.pdb文件有一个健康的争论,但我说可以。)

创建一个执行上述3个步骤的脚本,然后从XBuild任务调用它,或者从CI进程调用XBuild和此脚本。哇塞。您已经有了一个部署目标。祝你编码愉快!

票数 8
EN

Stack Overflow用户

发布于 2013-01-27 09:14:10

我希望有一台Linux服务器来做这件事,而不是使用XBuild。好消息是,你可以用我在this文章中找到的一种变通方法来做这件事。以下是上述文章中的摘录和解决方法链接:

构建服务器未安装Microsoft MVC (任何版本)。然而,这很容易解决-Microsoft MVC可以在http://nuget.org/packages/Microsoft.AspNet.Mvc的NuGet上找到。如果你需要安装一个旧版本,点击页面底部的旧版本,你会看到关于如何安装该版本框架的说明。

希望这能让你轻松一点!

票数 0
EN

Stack Overflow用户

发布于 2014-11-24 16:54:55

@达润的想法效果很好!我只是根据@达润的想法写了一个小脚本,希望能对其他人有所帮助。https://github.com/z-ji/MonoWebPublisher

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

https://stackoverflow.com/questions/14296517

复制
相关文章

相似问题

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