升级到 bootstrap 4 CSS minifier 在 asp.net mvc 中中断

iJK*_*iJK 3 asp.net-mvc

这些是我产生此错误所遵循的步骤

检查 VS 2017 是否是最新的

VS版

创建了一个新的asp.net Web应用程序,选择MVC和F5来调试应用程序,而不进行任何更改。我看到不同的 CSS 文件没有捆绑或缩小。

通过更改 debug = false 来更改 web.config 以缩小和捆绑

<compilation debug="false" targetFramework="4.6.1"/>
Run Code Online (Sandbox Code Playgroud)

F5 -> 查看站点,我看到一个 CSS 文件,其中内容被缩小了。

停止调试

从 VS -> 工具 -> NuGet Package Manger -> 管理 NuGet 包以获取解决方案。

我看到 14 个更新,其中之一是针对 bootstrap v4 的,我们希望在我们的项目中使用它。更新所有包

包更新后F5不调试

查看源码 -> CSS文件被捆绑成一个文件 -> 查看CSS文件,你会看到一个错误

/* Minification failed. Returning unminified contents.
(6,10): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,25): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,74): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,122): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,138): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,153): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,168): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,181): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,196): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,216): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,234): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,254): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,272): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,287): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,305): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,322): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,338): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,353): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,371): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,393): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,415): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,437): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,460): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,644): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
 */
Run Code Online (Sandbox Code Playgroud)

根据这篇文章,问题已在 BundlerMinifier 中修复,但我没有该包或 Nuglify,缩小和捆绑似乎仍然发生。

开箱即用而不进行任何更改应该是直接的,但事实并非如此。

我在这里缺少什么?

小智 5

这是一个内置的 C# 问题。他们使用他们的类来压缩CSS。我找到了问题的解决方案。你必须创建自己的类

public class MyStyleBundle : Bundle
{
    public MyStyleBundle(string virtualPath) : base(virtualPath, new MyCssMinify())
    {
    }

    public MyStyleBundle(string virtualPath, string cdnPath) : base(virtualPath, cdnPath, new MyCssMinify())
    {
    }
}

public class MyCssMinify : IBundleTransform
{
    internal static readonly MyCssMinify Instance = new MyCssMinify();

    internal static string CssContentType = "text/css";


    public virtual void Process(BundleContext context, BundleResponse response)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }
        if (response == null)
        {
            throw new ArgumentNullException("response");
        }
        if (!context.EnableInstrumentation)
        {
            // CssCompress.Go- This is your CSS compression implementation
            // You can use the library " Uglify"
            response.Content = CssCompress.Go(response.Content);
        }
        response.ContentType = CssContentType;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以添加新的捆绑包

    bundles.Add(new MyStyleBundle("~/Content/css").Include(
              "~/Content/bootstrap.css",
              "~/Content/site.css"));
Run Code Online (Sandbox Code Playgroud)