如何使用YUI Compressor.Net MSBuild任务2.3.0.0

时间:2013-10-29 18:02:49

标签: msbuild yui-compressor

我尝试在网上搜索此问题的解决方案,但似乎很不清楚。听起来人们看到了这一点,但解决方案对我来说似乎并不适用。

我已经从NuGet下载并安装了YUICompressor.NET.MSBuild 2.3.0.0到我的项目中。 我创建了一个MSBuild目标文件,它非常类似于包含的示例文件,并作为我的.csproj文件的一部分存在,因此我可以在AfterBuild步骤中运行它。

每次尝试构建我的VS项目时,我都会收到以下错误:


The "JavaScriptCompressorTask" task could not be loaded from the assembly SolutionDir\packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll. 
Could not load file or assembly 'Yahoo.Yui.Compressor, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Confirm that the  declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

我的文件夹结构如下:

\Solution
    \packages
        YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\
    \build
        ProjectFile.csproj

在csproj中我有:


<UsingTask TaskName="CssCompressorTask" AssemblyFile="packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll" />
<UsingTask TaskName="JavaScriptCompressorTask" AssemblyFile="packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll" />


<Target Name="AfterBuild">
    <ItemGroup>
        <JavaScriptFiles Include="someFile.js" />
    </ItemGroup>
    <JavaScriptCompressorTask SourceFiles="@(JavaScriptFiles)" OutputFile="build\combined.js" DeleteSourceFiles="false" CompressionType="None" ObfuscateJavaScript="false" PreserveAllSemicolons="true" />
    <JavaScriptCompressorTask SourceFiles="@(JavaScriptFiles)" OutputFile="build\combined.min.js" DeleteSourceFiles="false" CompressionType="Standard" />
</Target>

我错过了什么吗?谁能帮我?谢谢。

2 个答案:

答案 0 :(得分:2)

您是否尝试直接从codeplex下载2.3.0.0版?然后确保Yahoo.Yui.Compressor.Build.MsBuild.dll和Yahoo.Yui.Compressor.dll位于同一目录中。像这样,我能够使它发挥作用。

答案 1 :(得分:1)

自从我使用AfterBuild以来已经有一段时间..但是这样做是如何从某个目录运行msbuild程序..因此查找那些程序集文件 RELATIVE 从开始执行msbuild

我不确定这是否意味着msbuild是从C:\program files(x86)\Microsoft Visual Studio\<whatever...>

运行的

请注意:它是文件夹/路径(也称为执行路径),其中visual studio正在运行msbuild命令,而不是在msbuild存在的地方。

因此,它无法找到装配体。

尝试放入程序集的完整路径(只是为了查看它是否有效)。

例如。 C:\Projects\Solution\packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll

如果它从\solution\bin目录运行,那么你很幸运!因此,您可以执行..\packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll' (the .. means: from this bin directory, go up one level to解决方案then down intoand then down into YUIComp`等等。

因此,您的问题的答案是:在AfterBuild期间,查找Visual Studio正在运行msbuild命令的位置。也许在那里放一些代码来说'写入文件=&gt;当前路径我在:P'