2011-10-20 4 views
3

UPDATE은 : 여기에 문제가있다 생각하는 CSS의 예입니다Combres는 필터에도 불구하고 상대 URL을 고치지 않습니까?

.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } 

UPDATE - 코드 플렉스에 combres에 대한 이슈 트래커에서 workitem을 만들었습니다.

UPDATE : 나는 로그를 보면서 나는 무슨 일이 일어나고 있는지 발견 -

2011-10-24 16:32:20,490 [15] WARN Combres.Filters.FixUrlsInCssFilter - Cannot fix url url(images/ui-icons_454545_256x240.png) 
System.ArgumentOutOfRangeException: Length cannot be less than zero. 
Parameter name: length 
    at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) 
    at System.String.Substring(Int32 startIndex, Int32 length) 
    at Combres.Filters.FixUrlsInCssFilter.FixUrl(Resource resource, Match match) 

그래서, 나는 소스 코드를 가져 와서 보거나 내가 어쩌면에 넣어해야하나요 문제 추적기를 빗나가 다? 나는 필터를 사용하고

은 - 상대 URL이 문제를 해결하도록되어

<filter type="Combres.Filters.FixUrlsInCssFilter, Combres" /> 

here을 언급했다. 그러나 URL을 (CSS 배경 이미지) 아직 명시 적으로 사용하여 잘못된 경로를 사용하고 적용

http://somedomain.com/pics/pic.png

나는 또한 시도를 사용하여

http://somedomain.com/combres.axd/pics/pic.png

대신 같은 일을하고 있습니다 -

<filter type="Combres.Filters.FixUrlsInCssFilter, Combres" acceptedResourceSets="myCss" /> 

아무도 내 제안을 줄 수 있습니까? similar을 찾았지만 솔루션이 제대로 작동하지 않습니다.

업데이트 : 여기 내 combres.xml 그냥 경우의 -

<?xml version="1.0" encoding="utf-8" ?> 
<!-- 
    This file contains basic settings needed for most web apps. 
    For full Combres settings (with explanation), refer to the sample definition file: combres_full_with_annotation.xml 
    Also, refer to Combres' documentation: http://combres.codeplex.com/documentation 
--> 
<combres xmlns='urn:combres'> 
    <filters> 
    <filter type="Combres.Filters.FixUrlsInCssFilter, Combres" acceptedResourceSets="LogCreateCss" /> 
    <filter type="Combres.Filters.DotLessCssFilter, Combres" acceptedResourceSets="LogCreateCss" /> 
    </filters> 
    <cssMinifiers> 
    <minifier name="yui" type="Combres.Minifiers.YuiCssMinifier, Combres"> 
     <param name="CssCompressionType" type="string" value="StockYuiCompressor" /> 
     <param name="ColumnWidth" type="int" value="-1" /> 
    </minifier> 
    </cssMinifiers> 
    <jsMinifiers> 
    <minifier name="msajax" type="Combres.Minifiers.MSAjaxJSMinifier, Combres" binderType="Combres.Binders.SimpleObjectBinder, Combres"> 
     <param name="CollapseToLiteral" type="bool" value="true" /> 
     <param name="EvalsAreSafe" type="bool" value="true" /> 
     <param name="MacSafariQuirks" type="bool" value="true" /> 
     <param name="CatchAsLocal" type="bool" value="true" /> 
     <param name="LocalRenaming" type="string" value="CrunchAll" /> 
     <param name="OutputMode" type="string" value="SingleLine" /> 
     <param name="RemoveUnneededCode" type="bool" value="true" /> 
     <param name="StripDebugStatements" type="bool" value="true" /> 
    </minifier> 
    <minifier name="yui" type="Combres.Minifiers.YuiJSMinifier, Combres"> 
     <param name="IsVerboseLogging" type="bool" value="false" /> 
     <param name="IsObfuscateJavascript" type="bool" value="true" /> 
     <param name="PreserveAllSemicolons" type="bool" value="false" /> 
     <param name="DisableOptimizations" type="bool" value="true" /> 
     <param name="LineBreakPosition" type="int" value="-1" /> 
    </minifier> 
    </jsMinifiers> 
    <resourceSets url="~/combres.axd" defaultDuration="30" 
           defaultVersion="auto" 
           defaultDebugEnabled="false" 
           defaultJSMinifierRef="msajax" 
           defaultCssMinifierRef="yui"> 
    <resourceSet name="siteCss" type="css" minifierRef="yui"> 
     <resource path="\Content\StyleSheets\reset.css" /> 
     <resource path="\Content\StyleSheets\960.css" /> 
     <resource path="\Content\StyleSheets\Site960.css" /> 
     <resource path="\Content\StyleSheets\Site.css" /> 
    </resourceSet> 
    <resourceSet name="siteJs" type="js" minifierRef="msajax"> 
     <resource path="\Scripts\jquery-1.5.1.min.js" /> 
     <resource path="\Content\Scripts\blockUI.js" /> 
    </resourceSet> 
    <resourceSet name="overviewCss" type="css" minifierRef="yui"> 
     <resource path="\Content\Plugins\fancybox\css\jquery.fancybox-1.3.4.css" /> 
     <resource path="\Content\StyleSheets\overview_kam.css" /> 
    </resourceSet> 
    <resourceSet name="overviewJs" type="js" minifierRef="msajax"> 
     <resource path="\Content\Plugins\fancybox\scripts\jquery.fancybox-1.3.4.pack.js" /> 
    </resourceSet> 
    <resourceSet name="LogCreateCss" type="css" minifierRef="yui"> 
     <resource path="\Content\Plugins\fancybox\css\jquery.fancybox-1.3.4.css" /> 
    </resourceSet> 
    <resourceSet name="activityLogCloseCreateJs" type="js" minifierRef="msajax"> 
     <resource path="\Content\Plugins\fancybox\scripts\jquery.fancybox-1.3.4.pack.js" /> 
     <resource path="\Content\Plugins\fancybox\scripts\jquery.fancybox-1.3.4.js" /> 
    </resourceSet> 
    <resourceSet name="LogCreateCss" type="css" minifierRef="yui"> 
     <resource path="\Content\StyleSheets\Site.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.all.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery-ui.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.accordion.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.autocomplete.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.button.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.core.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.datepicker.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.dialog.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.menu.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.progressbar.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.resizable.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.selectable.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.slider.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.spinner.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.tabs.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.theme.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\themes\base\jquery.ui.tooltip.css" /> 
     <resource path="\Content\Plugins\jquerySpinner\demos\demos.css" /> 
    </resourceSet> 
    <resourceSet name="LogCreateJs" type="js" minifierRef="msajax" > 
     <resource path="\Content\Plugins\jquerySpinner\jquery-1.4.3.js" /> 
     <resource path="\Content\Scripts\ActivityLog\Create.js" /> 
     <resource path="\Content\Plugins\fancybox\scripts\jquery.fancybox-1.3.4.pack.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\external\jquery.mousewheel-3.0.4.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\external\glob.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\external\glob.de-DE.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\external\glob.ja-JP.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\ui\jquery.ui.core.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\ui\jquery.ui.widget.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\ui\jquery.ui.button.js" /> 
     <resource path="\Content\Plugins\jquerySpinner\ui\jquery.ui.spinner.js" /> 

    </resourceSet> 
    </resourceSets> 
</combres> 
+0

수정해야하는 URL을 표시하는 CSS 파일의 부분을 게시 할 수 있습니까? – DanP

+0

@ DanP 나는 CSS에서 발췌 한 내용으로 질문을 업데이트했다. – Vishal

답변

2

나는 당신의 CSS의 이미지 부분은 잘못된 생각; 대신이 시도 :

url('images/ui-bg_flat_75_ffffff_40x100.png') /*{bgImgUrlContent}*/ 

주 따옴표의 추가와 닫는 사이의 공간 ")"및 주석 블록의 경험에서

을 나는 청소기 물건을 유지하기 위해 상대 구문 응용 프로그램 루트를 사용하는 것이 좋습니다 수 있습니다 예를 들어, 내가 바꿀 것 당신에게 무엇을 :

url('~/images/ui-bg_flat_75_ffffff_40x100.png') /*{bgImgUrlContent}*/ 

업데이트 :

다른 옵션은 자신의 ISingleContentFilter 구현을 작성하는 것입니다.이 구현은 css 파일에 나타나는 일종의 구문을 허용합니다. 좋은 출발점을 찾기 위해 FixUrlsInCssFilter 개를 볼 수 있습니다.

업데이트 : 당신이 필터의 자신의 향상된 버전을 만든 경우

는 단순히 웹 프로젝트의 일환으로 컴파일 및 combres에 참조.같은 XML :

<filters> 
     <filter type="YourProject.MyBetterFilter, YourProject" /> 
</filters> 

완전히이 방법을 확장 Combres의 사용자 지정 버전을 다시 컴파일 (그리고 mantain) 할 필요가 없습니다.

+0

예........................... 또한'~'는 asp.net에 특정한 것입니다. 그래서 우리가 미래에 어떤 이유로 combres를 사용하지 않을 지 확신하지 못합니다. 도와 주셔서 감사 드리며 다른 방법이 있는지 살펴 보겠습니다. – Vishal

+0

당신은 항상 그런 구문에 더 관대 한 독자적인 ISingleContentFilter 구현체를 작성할 수 있습니다. 몇 가지 특수한 경우를 처리하기 전에이 작업을 수행했습니다. – DanP

+0

음 ... 거기에 예제가 있습니다. 또는 당신은 나에게 그 일을하는 단계를 말해 줄 수 있습니까? 감사! – Vishal