3

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

我已经从 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>

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

4

2 回答 2

2

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

于 2014-01-31T10:02:59.433 回答
1

自从我玩弄AfterBuild.. 以来已经有一段时间了,但是它的工作原理是 msbuild 程序是从某个目录运行的.. 因此寻找那些与执行 msbuild 的位置相关的程序文件。

我不确定这是否意味着正在运行 msbuildC:\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 thisbindirectory, go up one level to解决方案then down intoand then down intoYUIComp`...等。

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

于 2013-10-30T00:58:17.483 回答