Domanda

Ho bisogno di aiuto con il mio file MSBuild che ho creato qualche tempo fa.

Tutto quello che voglio fare è creare la soluzione, pubblicare un progetto all'interno della soluzione e quindi copiare i file in una directory

Nel momento in cui imposto Teamcity su .net 4 msbuild, strumenti msbuild 4.0 e per 86 ricevo un errore che indica

errore MSB4067:L'elemento <ItemDefinitionGroup> sotto l'elemento <Project> non è riconosciuto.


<?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>
È stato utile?

Soluzione

Ricevo anch'io lo stesso codice di errore, anche se mi lamento di un elemento diverso:

errore MSB4067:L'elemento <ArtifactAssemblies> sotto l'elemento <ItemGroup> non è riconosciuto.

Ho notato che Teamcity sta invocando la versione 2.0 di MSBuild, il che potrebbe spiegare perché msbuild ha difficoltà con xml.

'C: Windows Microsoft.net Framework v2.0.50727 msbuild.exe' '@"d: buildagent work 2f016459feee51ce build buildsolution.msbuild.teamcity.msbuild.tcargs" "d: buildagent 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 "

Ho risolto il problema di msbuild 2.0 aggiungendo al file .\conf\buildagent.properties sulla macchina dell'agente di team city build, quanto segue:

env.MSBuild=%system.DotNetFramework4.0_x86_Path%

Successivamente riavviare il servizio e il problema è stato risolto.

Altri suggerimenti

Sfortunatamente, non impacchettano gli obiettivi WebApplications.Non riesco a trovare un SDK che abbia questi target impacchettati senza che VS sia installato... assolutamente no.Non capisco perché la SM renda l'IC così difficile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top