4

我需要一些关于我不久前创建的 MSBuild 文件的帮助。

我要做的就是构建解决方案,在解决方案中发布一个项目,然后将文件复制到一个目录

在我将 Teamcity 设置为 .net 4 msbuild、msbuild 4.0 工具和 86 时,我收到一条错误消息

错误 MSB4067:元素<ItemDefinitionGroup>下方的元素<Project>无法识别。


<?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>
4

2 回答 2

8

尽管抱怨不同的元素,但我也收到了该错误代码:

错误 MSB4067:元素<ArtifactAssemblies>下方的元素<ItemGroup>无法识别。

我确实注意到 Teamcity 正在调用 2.0 版本的 MSBuild,这可以解释为什么 msbuild 正在与 xml 作斗争。

'C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe' '@"D:\BuildAgent\work\2f016459feee51ce\Build\BuildSolution.msbuild.teamcity.msbuild.tcargs" "D:\BuildAgent\ work\2f016459feee51ce\Build\BuildSolution.msbuild.teamcity.patch.tcprojx"' 工作目录 = 'D:\BuildAgent\work\2f016459feee51ce' Microsoft (R) Build Engine 版本 2.0.50727.4016 [Microsoft .NET Framework,版本 2.0.50727.4200 ]

我通过将以下内容添加到团队城市构建代理机器上的 .\conf\buildagent.properties 文件来修复 2.0 msbuild 问题:

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

之后重新启动服务,问题就解决了。

于 2010-04-13T19:33:25.373 回答
1

不幸的是,它们没有打包 WebApplications 目标。我找不到在没有安装 VS 的情况下打包了这些目标的 SDK……没办法。我不明白为什么 MS 让 CI 变得如此困难。

于 2010-05-02T23:22:31.457 回答