私は次のコードを持っています:
bundles.UseCdn = true;
var fontPath = "http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600";
var commonCss = new StyleBundle("~/css/common").Include(
"~/Content/less/myless.less",
"~/Content/css/opensans.css", // local copy of the font path above
"~/Content/less/mylessoverrides.less",
"~/Content/css/font-awesome.css");
commonCss.Transforms.Add(new CssMinify());
bundles.Add(commonCss);
上記のコードは問題なく機能します。ただし、上記のCDNリンクからopensans.cssをロードしたいと思います。また、1つのバンドルとして保持し、バンドルの順序はそのままにしておきたいと思います。次のコードはエラーをスローします:
var commonCss = new StyleBundle("~/css/common").Include(
"~/Content/less/myless.less",
"http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600",
"~/Content/less/mylessoverrides.less",
"~/Content/css/font-awesome.css");
The URL 'http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600'
is not valid. Only application relative URLs (~/url) are allowed.
1つの回避策は、それを3つのバンドルに分割することですが、それはバンドルの目的全体に反します。
var commonCss1 = new StyleBundle("~/css/common1").Include(
"~/Content/less/myless.less");
var commonCss2 = new StyleBundle("~/css/common2", fontPath).Include(
"~/Content/css/opensans.css");
var commonCss3 = new StyleBundle("~/css/common3").Include(
"~/Content/less/mylessoverrides.less",
"~/Content/css/font-awesome.css");
究極の解決策は、次のようなことを行うことです。
var commonCss = new StyleBundle("~/css/common").Include(
"~/Content/less/myless.less",
new { fontPath, "~/Content/css/opensans.css" },
"~/Content/less/mylessoverrides.less",
"~/Content/css/font-awesome.css");
他の誰かがこれを解決したり、この動作を可能にするフレームワークを拡張したりしましたか?