MSBuild / YUICompressor错误

时间:2011-09-15 12:27:29

标签: msbuild yui

使用以下msbuild配置:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">

    <UsingTask
        TaskName="CompressorTask"
        AssemblyFile="Yahoo.Yui.Compressor.dll" />

    <PropertyGroup>
        <JavaScriptOutputFile Condition=" '$(JavaScriptOutputFile)'=='' ">..\..\site.se\javascript\javascript.min.js</JavaScriptOutputFile>
    </PropertyGroup>

    <Target Name="CompressorTask">
        <ItemGroup>
          <JavaScriptFiles Include="..\..\site.se\javascript\javascript.js"/>
        </ItemGroup>
        <CompressorTask
             JavaScriptFiles="@(JavaScriptFiles)"
             ObfuscateJavaScript="True"
             PreserveAllSemicolons="True"
             DisableOptimizations="False"
             EncodingType="utf-8"
             DeleteJavaScriptFiles="false"
             LineBreakPosition="-1"
             JavaScriptOutputFile="$(JavaScriptOutputFile)"
             LoggingType="HardcoreBringItOn"
             ThreadCulture="en-us"
             IsEvalIgnored="false" />
    </Target>

</Project>

我收到以下错误:

  

Scripts.xml(14,11):错误MSB4067: - 元素下    - 元素未知。 (翻译自瑞典语)

我正在使用32位.NET 2.0版本的MsBuild。

怎么了?

1 个答案:

答案 0 :(得分:1)

您无法将ItemGroup放入具有MSBuild for .NET的目标中。您必须使用CreateItem任务或将其置于目标之外。在您的情况下,您似乎不需要动态创建JavaScriptFiles项,因此您只需将其放在目标之外。


<强>外

  <ItemGroup>
    <JavaScriptFiles Include="..\..\site.se\javascript\javascript.js"/>
  </ItemGroup>

  <Target Name="CompressorTask">
    <CompressorTask
         JavaScriptFiles="@(JavaScriptFiles)"
         ObfuscateJavaScript="True"
         PreserveAllSemicolons="True"
         DisableOptimizations="False"
         EncodingType="utf-8"
         DeleteJavaScriptFiles="false"
         LineBreakPosition="-1"
         JavaScriptOutputFile="$(JavaScriptOutputFile)"
         LoggingType="HardcoreBringItOn"
         ThreadCulture="en-us"
         IsEvalIgnored="false" />
  </Target>

使用CreateItem

  <Target Name="CompressorTask">
    <CreateItem Include="..\..\site.se\javascript\javascript.js">
      <Output TaskParameter="Include" ItemName="JavaScriptFiles"/>
    </CreateItem>

    <CompressorTask
         JavaScriptFiles="@(JavaScriptFiles)"
         ObfuscateJavaScript="True"
         PreserveAllSemicolons="True"
         DisableOptimizations="False"
         EncodingType="utf-8"
         DeleteJavaScriptFiles="false"
         LineBreakPosition="-1"
         JavaScriptOutputFile="$(JavaScriptOutputFile)"
         LoggingType="HardcoreBringItOn"
         ThreadCulture="en-us"
         IsEvalIgnored="false" />
  </Target>