Msbuild 是否可以在Microsoft Ajax Minifier清单文件中使用通配符和变量?
我正在使用来缩小我的javascript文件。在清单中,我想指定源文件夹中的所有js文件都应该缩小到不同的输出文件夹中。应将原始文件名用作输出文件名,并附加一个变量。我想做一些如下的事情,其中输出使用*通配符,变量是版本号4.60Msbuild 是否可以在Microsoft Ajax Minifier清单文件中使用通配符和变量?,msbuild,wildcard,manifest,microsoft-ajax-minifier,Msbuild,Wildcard,Manifest,Microsoft Ajax Minifier,我正在使用来缩小我的javascript文件。在清单中,我想指定源文件夹中的所有js文件都应该缩小到不同的输出文件夹中。应将原始文件名用作输出文件名,并附加一个变量。我想做一些如下的事情,其中输出使用*通配符,变量是版本号4.60 <?xml version="1.0" encoding="utf-8"?> $(version) = "-4.60" <root> <output path="..\Scripts\Pages\*$(version)" type
<?xml version="1.0" encoding="utf-8"?>
$(version) = "-4.60"
<root>
<output path="..\Scripts\Pages\*$(version)" type="js">
<input path="Scripts\PageSource\" type="js" />
</output>
</root>
$(版本)=“-4.60”
在输出设置中使用*会引发生成错误,但可能存在其他通配符?有很多输出和输入设置,这就是为什么我想一次指定一个版本号并重用它
中的任何设置(见下文)是否可用于此目的?我找不到任何示例显示ProjectDefaultSwitchs和配置设置的功能
这可能吗?的文档中有一些示例,它们的作用正是您想要的:列出输入文件,并根据输入文件缩小为新的文件名。大概是这样的:
<!-- This should point to the dll, or check docs and alternatively use 'Import'-->
<UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\AjaxMinTask.dll" />
<Target Name="Minify" AfterTargets="Build">
<PropertyGroup>
<!-- Version number to append should be defined somewhere -->
<MinVersion>4.60</MinVersion>
</PropertyGroup>
<ItemGroup>
<!-- List the input files, assume relative to project file -->
<ToMinify Include="$(MSBuildProjectDirectory)\Scripts\PageSource\*.js"/>
</ItemGroup>
<!-- Minify -->
<AjaxMin JsSourceFiles="@(ToMinify)" JsSourceExtensionPattern="\.js$" JsTargetExtension="..\Page\$(MinVersion).js"/>
</Target>
到目前为止,似乎不可能在清单文件中使用通配符和变量,但通过使用@stijn建议的第二种方法,我能够实现我的总体目标。以下是我所做的:
AjaxMin.targets文件的处理页面部分开始缩小Scripts\PageSource文件夹中的每个文件,并将结果输出到Scripts\Pages文件夹。它还将VerNumber值附加到生成的文件名。感谢您回复@stijn,但我已经阅读了所有的,没有看到任何使用PropertyGroup作为版本号的示例。在调整路径后,我在.vbproj文件的底部添加了第一个设置,但由于dll不在我们的项目中,因此出现了一个错误。即使如此,我也不希望每次版本号更改都要卸载和编辑项目文件。此外,当我在有关版本号之后添加第二个设置时,也没有发生任何事情:如果您不希望它出现在主项目中,请将它放在一个单独的导入项目中。或者从文本文件或git标记中读取,或者。。。(这些都不是特定于AjaxMin的,只是msbuild)。如果您不想硬处理您可以使用的dll的路径,请参阅文档。在我现在从MSI安装后添加第二个设置时,没有发生任何事情。我仍然需要不同文件的.targets,这些文件组合成1.js和.css。第二,文件存在于源中。您确定“%(ToMinify.FileName)$(MinVersion)”正确吗?
<!-- This should point to the dll, or check docs and alternatively use 'Import'-->
<UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\AjaxMinTask.dll" />
<Target Name="Minify" AfterTargets="Build">
<PropertyGroup>
<!-- Version number to append should be defined somewhere -->
<MinVersion>4.60</MinVersion>
</PropertyGroup>
<ItemGroup>
<!-- List the input files, assume relative to project file -->
<ToMinify Include="$(MSBuildProjectDirectory)\Scripts\PageSource\*.js"/>
</ItemGroup>
<!-- Minify -->
<AjaxMin JsSourceFiles="@(ToMinify)" JsSourceExtensionPattern="\.js$" JsTargetExtension="..\Page\$(MinVersion).js"/>
</Target>
<Target Name="Minify" AfterTargets="Build">
<PropertyGroup>
<MinVersion>4.60</MinVersion>
</PropertyGroup>
<ItemGroup>
<ToMinify Include="$(MSBuildProjectDirectory)\Scripts\PageSource\*.js"/>
</ItemGroup>
<Exec Command="ajaxmin.exe %(ToMinify.Identity) -out $(MSBuildProjectDirectory)\Script\Pages\%(ToMinify.FileName)$(MinVersion).jsmin -clobber" />
</Target>