[asp.net-mvc-4] MVC-3-converted-to-4 앱에 대한 System.Web.Optimization에 대한 참조를 추가하는 방법

최근에 MVC 3에서 MVC 4 베타로 변환 한 프로젝트에서 새로운 번들링 기능을 사용하려고합니다. global.asax에는 한 줄의 코드 BundleTable.Bundles.RegisterTemplateBundles();가 필요 using System.Web.Optimization;하며 맨 위에 필요합니다 .

이렇게하면 “조립품 참조가 누락 되었습니까?”라는 빨간색 구불 구불 한 선이 나타납니다. 참조를 추가하고 대화 상자에서 .NET 탭을 클릭하고 AZ에서 정렬하면 보이지 않습니다 System.Web.Optimization.

이 참조를 내 프로젝트에 어떻게 추가합니까?



답변

업데이트
버전 1.1.x를 사용할 수 있습니다. 릴리스 정보를 읽으십시오 : https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization


Microsoft.Web.Optimization 패키지는 이제 더 이상 사용되지 않습니다. ASP.NET (MVC) 4 이상에서는 Microsoft ASP.NET 웹 최적화 프레임 워크를 설치해야합니다.

  • nuget 에서 패키지를 설치하십시오 .

    Install-Package Microsoft.AspNet.Web.Optimization
  • App_Start \ BundleConfig.cs에서 번들을 만들고 구성하십시오.

    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles) {
            bundles.Add(new ScriptBundle("~/Scripts/jquery").Include(
                "~/Scripts/Lib/jquery/jquery-{version}.js",
                "~/Scripts/Lib/jquery/jquery.*",
                "~/Scripts/Lib/jquery/jquery-ui-{version}.js")
            );
    
            bundles.Add(new ScriptBundle("~/Scripts/knockout").Include(
                 "~/Scripts/Lib/knockout/knockout-{version}.js",
                 "~/Scripts/Lib/knockout/knockout-deferred-updates.js")
            );
        }
    }
  • global.asax.cs의 Application_Start ()에서 RegisterBundles () 함수를 호출하십시오.

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
  • view.cshtml에 Optimization 네임 스페이스를 포함하고 번들을 렌더링하십시오.

    @using System.Web.Optimization
    
    @Scripts.Render("~/Scripts/jquery")
    @Scripts.Render("~/Scripts/knockout")

자세한 내용은 http://www.asp.net/mvc/overview/performance/bundling-and-minification 을 참조하십시오.


답변

최종 릴리스 버전의 ASP.Net MVC 4에서 접근 방식은 다음과 같습니다.

  • nuget을 통해 Microsoft.AspNet.Web.Optimization을 설치하십시오 (프레임 워크에 의해 설치되지 않으므로).

    install-package Microsoft.AspNet.Web.Optimization
  • Global.asax Application_Start에서 번들을 작성하십시오.

    var scripts = new ScriptBundle("~/MyBundle");
    scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js");
    BundleTable.Bundles.Add(scripts);
  • “Views”web.config에 “System.Web.Optimization”네임 스페이스를 추가하십시오.

     <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Optimization" />
        </namespaces>
    </pages>
  • view.cshtml에서 마지막 단계에서 작성된 번들에 포함을 추가하십시오.

    @Scripts.Render("~/MyBundle")

디버그 모드에서 디렉토리의 모든 스크립트 파일은 개별적으로 렌더링됩니다. 릴리스 모드에서는 번들로 제공되고 축소됩니다.


답변

nuget에서 패키지를 업데이트 (다시 설치)하면 다음 명령을 사용할 수 있습니다.

update-Package Microsoft.AspNet.Web.Optimization -reinstall


답변

내 경우에는 tfs가 바이너리를 제외하기 때문에 tfs 문제였습니다. 너겟 PM은 너깃이 설치된 것을 찾은 다음 비슷한 문제가있는 경우 라이브러리를 업데이트하지 마십시오.

  • 소스 제어로 이동
  • .. \ packages \ Microsoft.Web.Optimization으로 이동하십시오.
  • lib 폴더 추가 (이진 확장 제외 제외)
  • 솔루션을 업데이트하고 경로에서 dll 참조를 추가하십시오.

NB : 패키지 폴더는 yousolution.sln 파일과 같은 레벨에 있습니다


답변

다음과 같이 패키지 관리자 콘솔에서 nuget을 사용하여 System.Web.Optimization을 설치 제거하십시오.

제거 패키지 Microsoft.AspNet.Web.Optimization

그런 다음 다음을 사용하여 다시 설치하십시오.

설치 패키지 Microsoft.AspNet.Web.Optimization

이 문제를 해결할 수 있습니다.


답변

Visual Studio를 통해 NUGet 에서 설치 Visual Studio 2010을 열고 도구-> 라이브러리 패키지 관리자-> 패키지 관리자 콘솔을 선택하십시오.

이것은 conslve를 열고 붙여 넣을 것입니다

Install-Package Microsoft.AspNet.Web.Optimization 

입력하십시오. 그리고 당신은 끝났습니다


답변

Global.asax application_start에서 설정 (릴리스 모드 등) :

BundleTable.EnableOptimizations = **true**;

DEBUG 모드 에서 축소를 활성화하고 false로 변경하여 모든 스크립트 및 스타일 파일을 개별적으로 렌더링합니다.