0

我正在尝试将 Microsoft 的 AjaxMin 添加到 VS2012 项目中,但我不确定自己在做什么。我想我错过了一些明显的东西。

我从这里的教程中复制了代码(http://ajaxmin.codeplex.com/wikipage?title=AjaxMinTask

我已经尝试添加对我的项目的引用,所以我的代码如下所示:

<UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\Build\AjaxMinTask.dll" />
<Target Name="AfterBuild" >
<ItemGroup>
  <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
</ItemGroup>
<ItemGroup>
  <CSS Include="**\*.css" Exclude="**\*.min.css" />
</ItemGroup>
<AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" />
</Target>

这是在我的 .csproj 文件的底部,其中已经有一个注释掉的 AfterBuild 部分。我收到错误消息说 JS、CSS、AjaxMin 是无效的子元素。当我尝试构建项目时出现错误,我不确定我缺少什么。我在项目中创建了一个名为 Build 的文件夹并添加了 AjaxMinTask.dll。我不知道是否需要做任何其他事情来确保正确引用它。

我也尝试过使用 Import 节点而不是 UsingTask <Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" /> 我认为 AjaxMin 安装正确,因为我可以从命令行运行它。

4

1 回答 1

0

在您的 .csproj 中,文档的结尾(我已包含最后一个结束元素)应如下所示:

      <Import Project="$(MSBuildExtensionsPath32)\Microsoft\MicrosoftAjax\AjaxMin.tasks" />
  <Target Name="AfterBuild" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="'$(Configuration)'=='Release'">
    <ItemGroup>
      <JS Include="scripts\*.js" Exclude="scripts\*.min.js;" />
    </ItemGroup>
    <ItemGroup>
      <CSS Include="css\main.css" />
    </ItemGroup>
    <AjaxMin Switches="-global:jQuery,$" JsSourceFiles="@(JS)" JsCombinedFileName="scripts\combined.min.js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" />
  </Target>
</Project>

由于我使用的是 Windows 7 64 位,您将看到 Import... 的路径包括 (MSBuildExtensionsPath32)。如果您使用的是 Windows 32 位,那么最后不需要 32。除此之外,您的代码应该可以工作。

忽略 JS、CSS、AjaxMin 子元素错误。但是你不应该得到一个内置的错误。如果您可以发布构建的错误,那将很有用。

另外,上面的代码结合了多个 JS 文件,只是为了好玩而添加的。

于 2013-07-17T05:30:35.760 回答