【问题标题】:Cassette.AssetReferenceException being fired when removing a file from folder从文件夹中删除文件时触发 Cassette.AssetReferenceException
【发布时间】:2012-04-10 16:08:58
【问题描述】:

我以前在/Public/javascripts/jquery1.1js 有一个.js 文件。

一切正常,但后来我需要从我的项目中删除这个文件,所以我只是从 Visual Studio 的解决方案中删除了它。

现在当我访问我的应用程序时,我得到:

“~/Public/javascripts/jquery.unobtrusive-ajax.js”中的引用错误, 第 1 行。找不到“~/Public/javascripts/jquery-1.5.1.js”。参考 “~/Public/javascripts/jquery.validate.unobtrusive.js”中的错误,行 1. 找不到“~/Public/javascripts/jquery-1.5.1.js”。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:Cassette.AssetReferenceException:参考错误 在“~/Public/javascripts/jquery.unobtrusive-ajax.js”中,第 1 行。不能 找到“~/Public/javascripts/jquery-1.5.1.js”。参考错误 “~/Public/javascripts/jquery.validate.unobtrusive.js”,第 1 行。不能 找到“~/Public/javascripts/jquery-1.5.1.js”。

这是一个堆栈跟踪:

[AssetReferenceException: Reference error in "~/Public/javascripts/jquery.unobtrusive-ajax.js", line 1. Cannot find "~/Public/javascripts/jquery-1.5.1.js".
Reference error in "~/Public/javascripts/jquery.validate.unobtrusive.js", line 1. Cannot find "~/Public/javascripts/jquery-1.5.1.js".]
   Cassette.BundleContainer.ValidateAssetReferences() +387
   Cassette.BundleContainer..ctor(IEnumerable`1 bundles) +41

当然,我知道为什么会这样,Cassette 仍在尝试查找已删除的文件,但我不知道如何告诉 Cassette:“Hey, this file is no longer relevant. Scan the folder again and rebuild a list of files you need to work with.

但我就是不知道如何做到这一点。

documentation 没有提及这一点,只是暗示它应该为我自动执行此操作。

这是我的配置类:

using Cassette.Configuration;
using Cassette.Scripts;
using Cassette.Stylesheets;

namespace XXX.WebUI
{
    /// <summary>
    /// Configures the Cassette asset modules for the web application.
    /// </summary>
    public class CassetteConfiguration : ICassetteConfiguration
    {
        public void Configure(BundleCollection bundles, CassetteSettings settings)
        {
            bundles.AddPerIndividualFile<ScriptBundle>("Public/javascripts/");
            bundles.AddPerIndividualFile<StylesheetBundle>("Public/stylesheets/");
        }
    }
}

在我的 _Layout.cshtml 文件中:

@{
    Bundles.Reference("Public/javascripts/site.js");
    Bundles.Reference("Public/javascripts/jquery.validate.unobtrusive.js");
    Bundles.Reference("Public/stylesheets/site.less");
}
<!DOCTYPE html>
    ...

    <head>
        <title>@ViewBag.Title</title>
        @Bundles.RenderStylesheets()

            ...
        @Bundles.RenderScripts()
    </body>

【问题讨论】:

    标签: c# asp.net-mvc-3 cassette


    【解决方案1】:

    jquery.validate.unobtrusive.js 文件的顶部是否包含对 jquery-1.5.1.js 的 JavaScript 引用?

    这条线看起来像:

     /// <reference path="jquery-1.5.1.js" />
    

    如果是这样,请删除该行。 Cassette 使用这些参考来确定构建顺序。

    参考:http://getcassette.net/documentation/scripts

    【讨论】:

      【解决方案2】:

      如果您引用具有相同根目录的文件,也会发生这种情况

      例如easyXDM.js 和 easyXDM.debug.js

      当您引用 easyXMD.js 时,它会给出异常,解决方案似乎是使用不同的命名约定来确保根不同,例如 easyXMDdebug.js。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 2013-06-28
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多