7

如果您从 BundleTransformer 的版本 1 升级到版本 2,您可能会收到以下消息:

找不到一个工厂,它创建了一个名为 的 JavaScript 引擎实例MsieJsEngine

像我一样,您甚至可能没有意识到您的升级不仅仅是一个单点版本。

怎么修?

4

2 回答 2

13

版本 2 不再使用 WEB.CONFIG 进行配置

因此,首先删除它并阅读此链接的其余部分

https://github.com/Taritsyn/JavaScriptEngineSwitcher/wiki/How-to-upgrade-applications-to-version-2.X


基本上,您将执行以下操作:

  • 删除 javscript 引擎的现有 web.config 节点
  • 在 global.asax 之类的地方添加一些初始化代码
  • 为您要使用的引擎安装 Nuget 包
  • 确保添加一个using能够使用扩展方法的语句(如果您选择这种方式)

我最终得到了这样的结果:

    using JavaScriptEngineSwitcher.Core;
    using JavaScriptEngineSwitcher.Msie;
    using JavaScriptEngineSwitcher.V8;

    ....

    public class JsEngineSwitcherConfig
    {
        public static void Configure(JsEngineSwitcher engineSwitcher)
        {
            engineSwitcher.EngineFactories
                .AddMsie(new MsieSettings
                {
                    UseEcmaScript5Polyfill = true,
                    UseJson2Library = true
                })
                .AddV8();

            engineSwitcher.DefaultEngineName = MsieJsEngine.EngineName;
        }
   }
于 2016-10-09T02:47:03.417 回答
1

我正在按照说明进行操作,但我的代码现在在 BundleConfig 上中断

var cssTransformer = new StyleTransformer();

在配置元素的name属性中/configuration/bundleTransformer/less/jsEngine未指定 JavaScript 引擎的名称。

如果您尚未安装 JavaScript 引擎,那么为了使该模块正常工作,建议安装以下 NuGet 包之一: * JavaScriptEngineSwitcher.Msie * JavaScriptEngineSwitcher.V8 * JavaScriptEngineSwitcher.ChakraCore

安装包后,需要为配置元素的属性 设置一个 JavaScript 引擎的名称(例如,MsieJsEngine) 。name/configuration/bundleTransformer/less/jsEngine

于 2016-11-13T04:00:27.727 回答