如何使用YUI压缩程序.Net MSBuild任务2.3.0.0

如何使用YUI压缩程序.Net MSBuild任务2.3.0.0,msbuild,yui-compressor,Msbuild,Yui Compressor,我曾尝试在网上搜索这个问题的解决方案,但似乎不太清楚。听起来人们似乎看到了这一点,但解决方案似乎对我不起作用 我已经从NuGet下载并安装了YUICompressor.NET.MSBuild 2.3.0.0到我的项目中。 我创建了一个MSBuild目标文件,该文件与包含的示例文件非常相似,并且作为.csproj文件的一部分存在,因此我可以在后构建步骤中运行它 每次尝试构建VS项目时,我都会遇到以下错误: The "JavaScriptCompressorTask" task could not

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

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

每次尝试构建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" />



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

我已经有一段时间没有玩过
后构建了。。但其工作原理是msbuild程序是从某个目录运行的。。并因此查找与执行msbuild的位置相关的程序集文件

我不确定这是否意味着正在从
C:\ProgramFiles(x86)\Microsoft Visual Studio\

注意:它是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'(
的意思是:从这个
bin
目录,上升一级到
解决方案
,然后进入
,然后进入
YUIComp`…等等


因此,您的问题的答案是:查找Visual Studio在后生成过程中运行msbuild命令的位置。可能会在其中输入一些代码,如“write to file=>我所在的当前路径:p”

是否尝试直接从codeplex下载版本2.3.0.0?然后确保Yahoo.Yui.Compressor.Build.msbuild.dllnd Yahoo.Yui.Compressor.dll驻留在同一目录中。通过这种方式,我可以使其正常工作。

我尝试使用完整路径,但仍然出现相同的错误。问题似乎在于尝试解决MSBuild任务的依赖关系:Yahoo.Yui.Compressor,Version=2.3.0.0。我尝试将其添加到与MSBuild fil相同的目录中e但运气不好。直接从下载YUI压缩程序使我克服了这个问题。不确定NuGet软件包是否不同步,但在安装时使用它们似乎不起作用。暂时将此打开,以防YUI压缩程序社区有人插话。我也遇到了同样的问题。NuGet软件包是v2.3.0.0,不起作用即使Yahoo.Yui.Compressor.dll在同一个目录中,下载.dll仍然可以手动工作。Blech:(我需要着手解决这个问题:(@Pure.Krome请修复它。我刚刚通过VS中的NuGet安装了2.3.0.0,并被它绊倒了。或者至少在YouTube上非常有用的视频教程中指出了它。这是一个很棒的产品。NuGet软件包现在已修复。v2.4.0.0已更新,另一个dll并排放在文件夹中。很抱歉在这个问题上花费了太长时间。修复。请重新安装d评论,如下。在您创建的codeplex讨论帖子上也回答了您的问题。

<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>