Teamcity msbuild 4.0 ajuda
-
26-09-2019 - |
Pergunta
Preciso de ajuda com meu arquivo msbuild que criei há um tempo atrás.
Tudo o que quero fazer é criar a solução, publicar um projeto dentro da solução e copiar os arquivos para um diretório
No momento em que eu defino o TeamCity como .NET 4 MSBUILD, MSBUILD 4.0 TODERSidades e, para 86, recebo um erro informando
erro msb4067: o elemento
<ItemDefinitionGroup>
abaixo do elemento<Project>
não é reconhecido.
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Run">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"/>
<PropertyGroup>
<OutputFolder>$(OutputDir)</OutputFolder>
<DeploymentFolder>$(DeploymentDir)</DeploymentFolder>
<CompilationDebug />
<CustomErrorsMode />
<ContentEditorsEmail />
<AdministratorsEmail />
</PropertyGroup>
<Target Name="Run">
<CallTarget Targets="Compile" />
<CallTarget Targets="Publish" />
<CallTarget Targets="Deploy" />
</Target>
<Target Name="Clean">
<ItemGroup>
<BinFiles Include="bin\*.*" />
</ItemGroup>
<Delete Files="@(BinFiles)" />
</Target>
<Target Name="Compile" DependsOnTargets="Clean">
<MSBuild Projects="WebCanvas.ZakisCatering.Website.sln"
Properties="Configuration=Release"/>
</Target>
<Target Name="Publish">
<RemoveDir Directories="$(OutputFolder)" ContinueOnError="true" />
<MSBuild Projects="WebCanvas.ZakisCatering.Website\WebCanvas.ZakisCatering.Website.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="Configuration=Release;WebProjectOutputDir=$(OutputFolder);OutDir=$(WebProjectOutputDir)\" />
</Target>
<Target Name="Deploy">
<RemoveDir Directories="$(DeploymentFolder)"
ContinueOnError="true" />
<ItemGroup>
<DeploymentFiles Include="$(OutputFolder)\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(DeploymentFiles)"
DestinationFolder="$(DeploymentFolder)\%(RecursiveDir)" />
</Target>
</Project>
Solução
Também estou recebendo esse código de erro, apesar de reclamar de um elemento diferente:
erro msb4067: o elemento
<ArtifactAssemblies>
abaixo do elemento<ItemGroup>
não é reconhecido.
Eu notei que o TeamCity está invocando a versão 2.0 do MSBuild, o que poderia explicar por que o MSBuild está lutando com o XML.
'C: Windows Microsoft.net Framework V2.0.50727 msbuild.exe' '@"d: BuildAgent work 2f016459feee51ce Build BuildSolution.msbuild.Teamcity.msbild.tarsCarges" work2f016459feee51ceBuildBuildSolution.msbuild.teamcity.patch.tcprojx"' working dir = 'D:BuildAgentwork2f016459feee51ce' Microsoft (R) Build Engine Version 2.0.50727.4016 [Microsoft .NET Framework, Version 2.0.50727.4200
Eu corrigi o problema de 2.0 msbuild, adicionando ao.
env.MSBuild=%system.DotNetFramework4.0_x86_Path%
Reinicie o serviço depois disso e o problema resolvido.
Outras dicas
Infelizmente, eles não empacotam as metas de aplicativos da web. Não consigo encontrar um SDK que tenha esses alvos embalados sem o VS instalado ... de jeito nenhum. Não entendo por que a MS torna o CI tão difícil.