在没有Visual Studio的情况下构建MVC 5应用程序?

时间:2015-03-12 02:32:18

标签: asp.net-mvc

我已经和asp.net MVC合作了一段时间了,但VisualStudio在幕后做了很多魔术,我觉得我不知道发生了什么。最近,当我尝试将应用程序部署到客户端的服务器时,这引起了一些挫折,而VisualStudio并未发布它所需的一切。在几次尝试失败之后,我最终不得不手动设置引用中的每一个DLL到" Copy Local"使它工作。这是你应该做的吗?你应该部署System和System.Core吗?会不会有问题?谁知道呢?

然后有一些事情,比如创建一个空的Web服务应用程序,它将生成一个70MB的项目!只是试图找出放在源代码控制中的内容本身就是一项耗时的任务。

我不需要JQuery或bootstrap或任何其他javascript文件,主题或字体。我确定我不需要一半被引用的DLL。 web.config非常庞大且难以理解。

我想了解MVC5应用程序的准系统是什么,但无法找到任何资源。我希望学习如何从最小的骨架开始,只添加最少的DLL并编写我自己的构建命令和部署脚本,并在不同的编辑器中编写代码。

这是否可能,或者你是否已经锁定使用Visual Studio并交叉指责它完成所有操作并且项目文件永远不会被破坏?

更新:

来自Claies指出的this answer,以及使用Visual Studio生成的Web API模板,这就是我能够创建一个不需要Visual Studio的准系统Web服务(几乎。)这适用于带有IIS 8的Windows 8.1。

在IIS中设置一个使用.NET v4.5应用程序池的网站。

添加index.html以测试它是否为页面提供服务。

添加Global.asax文件:

<%@ Application Codebehind="Global.asax.cs" Inherits="TestService.WebApiApplication" Language="C#" %>

据我所知,实际上并不需要Web.config文件。但你可以补充一下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authentication mode="None" />
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
    </system.web>
</configuration>

创建一个&#34; App_Code&#34;夹。在此文件夹中输入以下文件:

的Global.asax.cs

using System;
using System.Net.Http.Formatting;
using System.Web.Http;

namespace TestService
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            //  To return JSON by default, otherwise omit this line
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
                new RequestHeaderMapping(
                    "Accept", "text/html", StringComparison.InvariantCultureIgnoreCase,
                    true, "application/json"
                )
            );
        }
    }
}

WebApiConfig.cs

using System.Net.Http;
using System.Web.Http;

namespace TestService
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

TestController.cs(处理/ api /测试请求)

using System.Collections.Generic;
using System.Web.Http;

namespace TestService.Controllers
{
    //[Authorize]
    public class TestController : ApiController
    {
        // GET api/Test
        //[AllowAnonymous]
        public IEnumerable<string> Get()
        {
            return new string[] { "Hello", "World" };
        }

        // GET api/Test/5
        public Dictionary<string,int> Get(int id)
        {
            return new Dictionary<string,int> {{"id", id}};
        }

        // POST api/Test
        public void Post([FromBody]string value)
        {
        }

        // PUT api/Test/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/Test/5
        public void Delete(int id)
        {
        }
    }
}

创建&#34; bin&#34;夹。所需的最小DLL集是:

  • Newtonsoft.Json.dll
  • System.Net.Http.dll
  • System.Net.Http.Formatting.dll
  • System.Web.Http.dll
  • System.Web.Http.WebHost.dll
  • System.Web.Mvc.dll程序
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll

要获取这些DLL,您将需要VisualStudio。创建一个新的&#34; ASP.Net Web应用程序&#34;在硬盘上的某个地方,然后选择&#34; Web API&#34;模板。

这将生成一个新项目。展开&#34;参考文献&#34;在解决方案资源管理器中,您可以通过右键单击每个DLL文件并获取&#34;属性&#34;来找到上面列出的所有DLL文件的路径。将它们复制到您的网站&#34; bin&#34;文件夹中。

完成后,您应该能够在浏览器中访问您的网站:

http://yoursite/api/Test

从那以后,您可以根据需要添加配置,代码和DLL。您的项目开始时大约2MB而不是50MB +。您始终可以参考VS生成的Web API项目来帮助您添加其他功能。

0 个答案:

没有答案