2012-07-12 38 views
2

我有YUICompressor.NET,http://yuicompressor.codeplex.com/,配置爲msbuild任務,它在我的開發機器上按預期工作。

當我把代碼AppHarbor然後我得到下面的生成錯誤:

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

D:\temp\q2hapsex.50d\input\Projects\CroquetScores.Web\Build\YUICompressor.targets(21,9): 
error MSB4062: The "CompressorTask" task could not be loaded from the assembly 
D:\temp\q2hapsex.50d\input\Projects\CroquetScores.Web\Build\..\Bin\Yahoo.Yui.Compressor.MsBuildTask.dll. 
Could not load file or assembly 
'file:///D:\temp\q2hapsex.50d\input\Projects\CroquetScores.Web\Bin\Yahoo.Yui.Compressor.MsbuildTask.dll' 
or one of its dependencies. The system cannot find the file specified. 
Confirm that the <UsingTask> 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 

我已經從改變使用任務YUICompressor.targets試圖勸在http://support.appharbor.com/discussions/problems/3629-yuicompresoor-msbuild-task

<UsingTask TaskName="CompressorTask" AssemblyFile="$(OutDir)Yahoo.Yui.Compressor.MsBuildTask.dll" /> 

我使用以下命令來測試本地計算機上設置:

msbuild AppHarbor.sln /property:Configuration=Release /property:OutDir=D:\temp\TestingAppHarbor\ 

,但它導致了同樣的錯誤,除了路徑信息:

D:\Code\croquetscores.com\Projects\CroquetScores.Web\Build\YUICompressor.targets(21,9): 
error MSB4062: The "CompressorTask" task could not be loaded from the assembly 
D:\Code\croquetscores.com\Projects\CroquetScores.Web\Build\Yahoo.Yui.Compressor.MsBuildTask.dll. 
Could not load file or assembly 
'file:///D:\Code\croquetscores.com\Projects\CroquetScores.Web\Build\Yahoo.Yui.Compressor.MsBuildTask.dll' 
or one of its dependencies. The system cannot find the file specified. 
Confirm that the <UsingTask> 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. 

如果我用實際路徑替換$(OUTDIR)在YUICompressor.targets那麼解決方案建立沒有錯誤。

我在做什麼錯?

+0

這些構建和路徑相關的錯誤是棘手的..我希望有些人可以幫助你。我一直在使用Cassette進行資產處理,至少那個人在AppHarbor工作起來就像一個魅力。 – Tx3 2012-07-12 12:16:10

+0

您可以在msbuild執行任務時確認'Yahoo.Yui.Compressor.MsBuildTask.dll'程序集在輸出目錄中嗎? – friism 2012-07-12 20:11:04

+0

執行任務時,文件存在。 – 2012-07-12 21:09:37

回答

1

我認爲使用property functions會更好。

<PropertyGroup> 
    <YuiCompressorDir>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\Bin'))</YuiCompressorDir> 
</PropertyGroup> 
<UsingTask TaskName="CompressorTask" AssemblyFile="$(YuiCompressorDir)\Yahoo.Yui.Compressor.MsBuildTask.dll" /> 

您可以從ASP.NET Web Stack項目看看現場example