使用以下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。
怎么了?
答案 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>