对于 TFS 构建,$(TeamBuildConstants) 为空

发布于 2025-01-02 02:06:01 字数 496 浏览 1 评论 0原文

我有一个像这样的构建后事件:

如果不是“$(TeamBuildConstants)”==“_TEAM_BUILD_”“$(SolutionDir)Tools\NuGet.exe”包“$(ProjectDir)MyAssembly.nuspec”-BasePath“$(ProjectDir)$(OutDir)。”

如果“$(TeamBuildConstants)”==“_TEAM_BUILD_”“$(SolutionDir)Tools\NuGet.exe”包“$(ProjectDir)MyAssembly.nuspec”-BasePath“$(OutDir)。”

当我在 Visual Studio 中进行构建时,$(TeamBuildConstants) 是空白的(它应该是空白的)。

但是当我在 TFS 2010 Server 上构建时,$(TeamBuildConstants) 仍然是空白。我需要做什么才能知道 TFS 构建何时运行?

I have a post build event like this:

if NOT "$(TeamBuildConstants)"=="_TEAM_BUILD_" "$(SolutionDir)Tools\NuGet.exe" pack "$(ProjectDir)MyAssembly.nuspec" -BasePath "$(ProjectDir)$(OutDir)."

if "$(TeamBuildConstants)"=="_TEAM_BUILD_" "$(SolutionDir)Tools\NuGet.exe" pack "$(ProjectDir)MyAssembly.nuspec" -BasePath "$(OutDir)."

When I build on in Visual Studio $(TeamBuildConstants) is blank (as it should be).

But when I build on my TFS 2010 Server, $(TeamBuildConstants) is still blank. What do I need to do to tell when I have a TFS Build running?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等待我真够勒 2025-01-09 02:06:01

团队建设

http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/618392e6-a108-4e70-898b-52ee6afc0600/

TeamBuild 2008 为生成代理运行的生成设置 IsDesktopBuild=false。默认值(如果未在命令行或项目属性中设置)为 true。 TFS 2010 的行为是相同的,因此请尝试以下操作:

<PostBuildEvent Condition=" '$(IsDesktopBuild)' == 'true' ">echo This is post-build</PostBuildEvent>

尽管我从一些人那里听说它不起作用,但有一个替代属性 - $(BuildingInsideVisualStudio) - 它可能会起作用。

如果两者都不起作用,您可能需要编辑构建定义并自行自定义 msbuild 调用。

NuGet 1.6

NuGet 1.6 还有一个 msbuild 文件,可以创建可能值得一看的 nuget 文件。

片段

<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<BuildCommand>"$(NuGetExePath)" pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>

Team Build

http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/618392e6-a108-4e70-898b-52ee6afc0600/

TeamBuild 2008 sets IsDesktopBuild=false for builds run by a build agent. The default (if not set on the command line or by a project property) is true. The TFS 2010 behavior is the same, so try something like:

<PostBuildEvent Condition=" '$(IsDesktopBuild)' == 'true' ">echo This is post-build</PostBuildEvent>

Although I have heard from some people that it doesn't work, and there is an alternative property - $(BuildingInsideVisualStudio) - which may work instead.

If neither work you may need to edit your Build Definition and customize the msbuild call yourself.

NuGet 1.6

NuGet 1.6 also has an msbuild file that can create nuget files which may be worth looking at.

snippet

<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<BuildCommand>"$(NuGetExePath)" pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文