【发布时间】:2010-11-08 12:07:33
【问题描述】:
我有一个正在尝试在 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>
我的树是这样的:
- test.proj
- application.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 文件都做同样的事情,而且它们似乎都是全局的……我不明白为什么这对我不起作用。
有什么帮助吗?
【问题讨论】:
-
您是否正在尝试构建 test.proj 文件?我不确定我是否理解您为什么指定 AssemblyInfo.cs 而不是仅从项目文件构建。
-
我构建了 test.proj 文件作为显示我的问题的最小示例。实际上,我正在尝试在 TFS 中构建我的多个解决方案文件。这只是为了说明我在 ItemGroups 和 Targets 中看到的范围界定行为。
-
我希望我能投票支持所有试图提供帮助的人,但显然我太“新手”了。我只是想写一个字条,我非常感谢这里的每个人都花时间观察和思考这个问题。
标签: c# tfs msbuild scope tfsbuild