2010-08-30 1 views
0

Я пытаюсь написать пользовательскую задачу в файле MSBuild для сжатия некоторых js-файлов с помощью Google Closure Compiler. Я загрузил файлы ClosureCompiler.dll и ClosureCompiler.tasks с сайта и сохранил их в папке с моим m/c. Я добавил следующие строки в моем файле csprojОшибка Google Closure MSBuild Ошибка

<Import Project="C:\Projects\Closure\ClosureCompiler.tasks" /> 
<Target Name="AfterBuild"> 
    <ItemGroup> 
     <JS Include="test.js" /> 
    </ItemGroup> 
    <ClosureCompiler CompilationLevel="SIMPLE_OPTIMIZATIONS" SourceFiles="@(JS)" SourceExtensionPattern="\.js$" TargetExtension=".min.js" /> 
</Target> 

Файл test.js хранится в корневом каталоге моих файлов проекта. Я не хочу включать дополнительный ApiUrl, так как я хочу сжать файлы локально с помощью ClosureCompiler.dll. Файл ClosureCompiler.tasks является

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <UsingTask TaskName="ClosureCompiler" AssemblyFile="C:\Projects\Closure\ClosureCompiler.dll" /> 
</Project> 

Однако, когда я пытаюсь скомпилировать проект, он дает мне ошибку:

Compilation Failed: test.js, Reason: Object reference not set to instance of an object 

Может кто-нибудь поможет, как к тому, что проблема или что я делаю неправильно ?

ответ

1

Я столкнулся с той же проблемой, и это ошибка в коде пользовательской задачи. Это связано с тем, что API возвращает ошибку, а пользовательский код не проверяет, возвращает ли API ошибку.

Он проверит

compiledSource.SelectSingleNode("//compileCode").InnerText 

Это отбросит объект не ссылаться на .InnerText, если нет узла с именем compiledCode. Сначала вам нужно проверить ошибки в ответе.

if (compiledSource.SelectSingleNode("//error") != null) 
    throw new Exception(compiledSource.SelectSingleNode("//error").InnerText); 
1

Перейти к

http://closure-compiler.appspot.com/home

И посмотреть, если вы можете вставить "Ничего". Вам, возможно, достиг почасовой предела. VS2010 ПРОПУСКАЕТ это сообщение, если вышеупомянутое происходит и вызывает ошибку. Итак ... это одна вещь, которая вызовет это.

 Смежные вопросы

  • Нет связанных вопросов^_^