c# - ItemGroup 项目范围,或者 "Why does MSBuild hate me?"

标签 c# tfs msbuild scope tfsbuild

我有一个解决方案,我试图在 TFS 上构建。我想更新所有相应文件的版本,但我一直在努力完成这项工作。有很多关于如何操作的链接,但由于一个小问题……范围,它们都不适合我。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <Target Name="DesktopBuild">
        <CallTarget Targets="GetFiles"  />

        <Message Text="CSFiles: '@(CSFiles)'" />
    </Target>

    <Target Name="GetFiles">
        <ItemGroup>
            <CSFiles Include="**\AssemblyInfo.cs" />
        </ItemGroup>
        <Message Text="CSFiles: '@(CSFiles)'" />
    </Target>
</Project>

我的树看起来像这样:

  • 测试.proj
  • 应用.sln
  • 应用程序(文件夹)
    • main.cs
    • 属性(文件夹)
      • AssemblyInfo.cs

当我从解决方案文件夹运行“c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe test.proj”时...我得到以下输出:

Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3074]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 7/6/2009 3:54:10 PM.
Project "D:\src\test.proj" on node 0 (default targets).
  CSFiles: 'application\Properties\AssemblyInfo.cs'
DesktopBuild:
  CSFiles: ''
Done Building Project "D:\src\test.proj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.04

那么,我怎样才能使我的 ItemGroup 具有全局范围?编译器和 TeamBuild 使用的所有 Targets 文件都做同样的事情,而且它们似乎都是全局的……我不明白为什么这对我不起作用。

有什么帮助吗?

最佳答案

您是否尝试过使用 DependsOnTarget 而不是 CallTarget?可能是 CallTarget 导致了范围问题。

关于c# - ItemGroup 项目范围,或者 "Why does MSBuild hate me?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088950/

相关文章:

tfs - 无法将队列添加到现有 TFS 2015 构建代理池

visual-studio - 为什么没有Team Foundation Server Express Edition?

msbuild - 未为 "SignFile"任务指定所需参数 "CertificateThumbprint"的值

.net-4.0 - .NET 4 SDK 不安装 Bootstrapper 目录

version-control - 最佳的构建过程解决方案来管理构建版本

c# - .NET 如何知道在哪里寻找扩展方法?

c# - DataGridTextColumn 值不断变回(如果无效)

visual-studio - 如何停止 visual studio 检查 web.config?

c# - 单个 LINQ 中两个结构不兼容的初始化出错

c# - Json XmlDictionaryReader 无法读取包含空格的值