Msbuild 是否可以在Microsoft Ajax Minifier清单文件中使用通配符和变量?

Msbuild 是否可以在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

我正在使用来缩小我的javascript文件。在清单中,我想指定源文件夹中的所有js文件都应该缩小到不同的输出文件夹中。应将原始文件名用作输出文件名,并附加一个变量。我想做一些如下的事情,其中输出使用*通配符,变量是版本号4.60

<?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.dll、AjaxMin.exe、Ajaxminifer.exe和AjaxMinTask.dll文件复制到项目的生成文件夹中。如果有多个开发人员,则此文件夹应在源代码管理下
  • 在项目的生成文件夹中创建了名为AjaxMin.targets的文件。该文件的内容是:
  • 
    


    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>