我想知道如何使用exe二进制文件处理LESS文件列表,例如:
./dotless.Compiler.exe -m *.less
Run Code Online (Sandbox Code Playgroud)
现在我只能做单独的文件,但不能做通配符.
我之所以问这个问题的原因是我想在MSBuild中创建一个目标,即处理一个项目集合(这是一个文件列表).我找不到在MSBuild中循环任务的方法.如果有人知道如何为每个文件循环任务,那也将解决我的问题.
我试图通过将变量+ mix-ins移动到新的CSS文件来分离我的CSS文件.我也在使用Azure中托管的MVC 4站点,如果这是一个问题.
在我使用混合的CSS文件的最顶层,我有:
@import "theme.less.css";
Run Code Online (Sandbox Code Playgroud)
但是,它不会加载它.我得到的错误是:
variable @defaultColour is undefined on line 166 in file 'styles.less.css'
Run Code Online (Sandbox Code Playgroud)
很明显,theme.less.css没有被引用.dotless的文档没有提到@import声明.
我试图使用dotless完成以下结构:
styles/variables.less - 包含所有变量,如下所示
@color:green;
Run Code Online (Sandbox Code Playgroud)
styles/component1.less - 一些导入variables.less的随机组件特定样式
@import "variables";
body {
background:@color;
}
Run Code Online (Sandbox Code Playgroud)
styles/component2.less - 一些更多样式,它们还导入全局variables.less文件
@import "variables";
a {
color:@color;
}
Run Code Online (Sandbox Code Playgroud)
BundleConfig.cs - 如下所示声明捆绑包.我正在使用这个捆绑添加:https://gist.github.com/benfoster/3924025
bundles.Add(new Bundle("~/styles/css", new LessTransform()).Include("~/styles/component1.less", "~/styles/component2.less"));
Run Code Online (Sandbox Code Playgroud)
当Debug设置为true时,一切正常

但是当Debug设置为false时
只有在Include方法中传递的第一个文件才能解析@import"变量".其余的都失败了.
下面是首先声明"〜/ styles/component1.less"的输出
bundles.Add(new Bundle("~/styles/css", new LessTransform()).Include("~/styles/component1.less", "~/styles/component2.less"));
Run Code Online (Sandbox Code Playgroud)

首先声明"〜/ styles/component2.less"时的输出
bundles.Add(new Bundle("~/styles/css", new LessTransform()).Include("~/styles/component2.less", "~/styles/component1.less"));
Run Code Online (Sandbox Code Playgroud)

奇怪的是 - 如果我在component1和component2中导入不同的文件,它会起作用
例如,如果我在任一文件中将"varibales"重命名为"variables.less",只是为了使这些导入看起来有点不同.有用.如下
款式/ component1.less
@import "variables.less"; // added extension here
body {
background:@color;
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?几天以来我一直在努力.
编辑
使用此结构的原因:
在调试模式下发送较少的文件,因为它使调试更容易.行号注释不是很有帮助
在生产中提供时连接和缩小所有较少的文件. …
有没有办法利用一个master.less文件来存放.less的所有必要的配置参数?
我有以下变量,我目前必须在我的解决方案中放在每个.less文件的顶部.
/* DOTLESS VARIABLES AND REUSABLE FUNCTIONS */
@brand_color: #9fdf40; /* Primary MySite Green */
@Color: #696969; /* Alternate Text Color */
@top_gradient: #80cc15; /* MySite Green for TOP of GRADIENT */
@bottom_gradient: #9fdf40; /* MySite Green for BOTTOM of GRADIENT */
@borders: #696969; /* Standard Gray Border */
@light_borders: #DDD; /* Lighter Gray Border */
@note: #ffffbe; /* Yellow Notification Color (Also used for ad highlights) */
@font_family: Verdana, Arial, Helvetica, sans-serif; /*Standard MySite Font Family*/ …Run Code Online (Sandbox Code Playgroud) ReSharper 6将.less文件视为.CSS,尽管它们不是.CSS.
因此,它不是适当的语法突出显示,而是强调几乎所有的红色(语法错误).
如何禁用此"功能"?
我需要从文件" .less"创建带有标准CSS逻辑的" .css"文件,然后再进行构建.
我试着删除dotless.compiler.exe文件夹,在Pre-Build事件中调用此命令
$(SolutionDir)content\folder\dotless.compiler.exe -m
$(ProjectDir)content\css\site.less $(ProjectDir)content\css\site.css
Run Code Online (Sandbox Code Playgroud)
但得到例外" command exited with code 3".我哪里错了?你能提供另一种方式吗?
我正在使用dotless从管理页面动态更改我的网站外观.
本质上,我使用正则表达式来读取less中定义的变量,然后为用户提供更改变量值的选项.
我想要选择设置背景图像.基本上我需要一种方法来检查字符串是否为空,如果它不是然后添加背景图像mixin.
@BackgroundImage: '';
.showBackground(@fileName) when (@fileName != '') {
background-image: url('../Themes/images/backgrounds/@{fileName}');
}
body {
.showBackground(@BackgroundImage)
}
Run Code Online (Sandbox Code Playgroud)
因此默认情况下没有背景''当用户设置背景时,变量@BackgroundImage将被设置为'backgroundImage1.jpg'
如何让这个空字符串逻辑工作?
PS我已经尝试将变量设置为#000000并使用isstring()但它似乎返回true.
我开始在我的asp.net网站上使用dotless,这需要一个特殊的httphandler来工作.该网站使用表单身份验证.这是问题所在:当我登录http://example.org/stylesheets/mystyles.less的请求时工作正常.它给了我适当的CSS.如果我没有登录,请求被拒绝,我被重定向到登录页面.有没有办法允许匿名访问此文件?这不起作用:
<location path="~/stylesheets">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud) dotless ×8
css ×6
less ×4
asp.net ×2
asp.net-mvc ×1
chirpy ×1
msbuild ×1
msbuild-task ×1
resharper ×1