2014-09-11 1 views
2

Мы используем MSBuild на нашем сервере CI для компиляции нашего WebApp, однако в сборке отсутствуют файлы JavaScript, созданные TypeScript, из вывода сборки.MSBuild вывод отсутствующих файлов javascript, скомпилированных с помощью Typcript

Я бы ожидал, что вывод будет содержать JavaScript, а не Typcript, однако ни они не выводятся в ожидаемых местах.

Как я могу добавить файлы JavaScript без необходимости иметь их в своем решении? Команда TypeScript, похоже, считает, что это плохо, но я бы предпочел не иметь дубликатов всех файлов в моем решении.

+0

Привет @Gent, я задавался вопросом, если вы получили его на работу? Пожалуйста, дайте мне знать, если у вас все еще есть проблемы с этим. –

+0

@MrMathos Я понял, однако установка на машиностроении присутствовала на сервере сборки, поэтому в конечном итоге это была другая проблема, чем подробная информация в вашем ответе. Спасибо за ваше время и помощь. – Gent

+0

Без проблем, рад, что вы его нашли! –

ответ

5

Проблема возникла из-за использования MSBuild вместо «Опубликовать» на сервере сборки. Я добавил, что цель AfterBuild для контента включает все JS-файлы в вывод сборки.

<Target Name="AfterBuild"> 
    <ItemGroup> 
     <Content Include="**\*.js" /> 
    </ItemGroup> 
</Target> 

Хотя это не является идеальным, это позволяет JS файлы не показывать в растворе при использовании Visual Studio и файлы в конечном итоге на выходе сборки.

+0

Позвольте мне спросить вас - когда вы добавили это, он фактически помещает файлы на целевой сервер? Я в аналогичной ситуации, когда я получил всю свою работу, работая, используя публикацию локально, но когда я фактически запускал ту же установку .csproj на реальном сервере сборки, поставив очередь на сборку, это не сработало. – NullHypothesis

+0

Да, он работает через msbuild на jenkins и через развертывание octopus, если он добавлен к самому csproj – Gent

+0

Это настолько странно, почему бы мне не копировать файлы на целевой сервер? Он не помещает их в папку _publishedwebsites или сам целевой сервер. Я в основном использовал то, что у вас есть. Было ли что-нибудь еще? – NullHypothesis

0

ТипScript, вероятно, не установлен на вашем сервере сборки. Чтобы установить его, скопируйте папку TypeScript с c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\ в ту же папку на вашем сервере сборки (где v12 - это версия вашей Visual Studio).

Версия Visual Studio на сервере сборки может отличаться. В моей ситуации версия на моей машине разработки - v12, а сервер сборки - v11. Я обнаружил, что, добавляя следующее в файл [WebProjectName].csproj:

<Target Name="PrintVisualStudioInfo"> 
    <Message Text="VisualStudioVersion: '$(VisualStudioVersion)'" Importance="High" /> 
</Target> 
<PropertyGroup> 
    <CompileDependsOn> 
     PrintVisualStudioInfo; 
     $(CompileDependsOn) 
    </CompileDependsOn> 
</PropertyGroup> 

Убедитесь, что вы поместите его после последнего <Import /> элемента. Теперь, когда вы смотрите на вывод своей сборки на сервере сборки, вы должны увидеть «VisualStudioVersion: xx».

Скопируйте папку TypeScript в папку с правильной версией на сервере сборки.

5

Я пробовал много решений из Интернета, включая <Content Include="**\*.js" />, но ничего не работало. Я использую MSBuild в своем локальном блоке dev и устанавливается машинописный шрифт, а цели доступны в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript.

Оказывается, мой «старый» бегун MSBuild для веб-приложений csproj-файлов устарел. Я делал это:

MSBuild.exe my.csproj /Target:ResolveReferences;_CopyWebApplication /property:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug 

но благодаря this post мне нужно использовать UseWPP_CopyWebApplication вместо наследия _CopyWebApplication:

MSBuild.exe /t:Rebuild "/p:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False" my.csproj 

Теперь без какого-либо редактирования файла csproj, вся моя машинопись включена!

+0

Спасибо! Это должно быть отмечено как ответ. Ответ, который вы связали с исследованием, и нашел корень проблемы, исходя из плохого решения Microsoft в своем целевом файле задачи публикации. –

0

Просто добавьте в случае, если это поможет людям.
У нас была эта проблема в последнее время, и это было исправлено добавлением /p:VisualStudioVersion=12.0 в файл BAT:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe FullBuild.proj /p:VisualStudioVersion=12.0 /t:createRelease /p:ReleaseNumber=5.22.0 
Смежные вопросы