AjaxMin任务已声明或使用不正确,或在构造期间失败

时间:2013-02-12 17:08:32

标签: asp.net-mvc-4 visual-studio-2012 microsoft-ajax-minifier

我正在尝试将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安装正确,因为我可以从命令行运行它。

1 个答案:

答案 0 :(得分: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 ... includes(MSBuildExtensionsPath32)的路径。如果您使用的是Windows 32位,则最后不需要32位。除此之外,您的代码应该可行。

忽略JS,CSS,AjaxMin childelements错误。但是你不应该得到一个内置的错误。如果您可以发布您的内置错误,那将非常有用。

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