c# - ASP.NET MVC 以分发包的形式部署

标签 c# .net asp.net-mvc

我有一个 ASP.NET MVC 应用程序。我需要一种部署它的方法。

但是

我不需要将它复制到我自己的网络服务器上。它并不意味着它是一个可以在 Internet 上访问的网站。没有。

相反,我需要我的用户能够将它安装在他们自己的服务器上。这可能会或可能不会从 Internet 上看到。

也就是说,我需要创建一个 MSI 程序包(或 EXE 自解压安装程序,或其他),我的客户只需双击它,MVC 应用程序就应该安装在他们的本地 IIS 上。

当然,我可以简单地编写一些代码来提取文件,将它们复制到本地硬盘,然后在 IIS 中创建网站或虚拟目录,等等。但有件事告诉我应该有更简单的方法。比方说,一个 WiX 扩展已经做到了这一点。或者什么的。

注意:应用程序非常简单。不需要数据库、特殊权限、SMTP 服务器配置……或者,实际上,根本不需要任何类型的配置。只需复制文件并创建 IIS 应用。

最佳答案

这可能需要一些编码,但是(如果您需要一个漂亮的 UI)Visual Studio 构建部署包中有一个功能。

Build delpoyment package

它将为您构建一个包,您的客户可以运行该包以在 IIS 中创建所有必要的东西,因此也应用了 IIS 设置。 Scott Hanselman有一系列关于它的帖子。您可以从包/发布设置中更改默认设置。

package/publish settings .要部署包,您必须拥有 msdeploy.exe。您可以发送压缩文件夹,当您的客户运行 .cmd 文件时,他们将立即启动并运行。但是,如果您想在包周围放上漂亮的蝴蝶结,您可以从 C# 应用程序运行它,这将需要一些编码,但我相信这不会超过 15 分钟。

Usage:
--------------------------
{0} [/T|/Y] [/M:ComputerName] [/U:UserName] [/P:Password] [/G:UseTempAgent] [Additional msdeploy.exe flags ...]

你基本上需要做的就是

System.Diagnostics.Process proc = new System.Diagnostics.Process();
const string filename = @"/*some file location*/";
proc.StartInfo.FileName = filename;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();

关于c# - ASP.NET MVC 以分发包的形式部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5790184/

相关文章:

c# - 模拟属性 - C#

c# - Visual Studio 调试日志(如 Android 中的 logcat)?

c# - 如何清除 Windows Mobile 8 的 URL 缓存

c# - 在 Visual Studio 2010 中,在单行 C# 代码中搜索两个字符串

c# - WebAPI [授权] 属性。这里发生了什么?

c# - modelBuilder.Configurations.Add 和 modelBuilder.Entity onModelCreating

.net - 冒充其他用户时发生灾难性失败

c# - Interop Word - 从文档中删除页面

c# - 如何防止 Entity Framework 加载所有子对象

c# - 在 MVC 中的同一 View 上显示列表并提交表单