【发布时间】:2014-10-24 19:34:19
【问题描述】:
以下 MSBuild 脚本有效,但我必须对 TeamCity 使用的工作文件夹(GetAssemblyIdentity 行)进行硬编码。
我如何动态地获得“C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3”?
<Target Name="GetVersion">
<GetAssemblyIdentity AssemblyFiles="C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3\AAA.Online.Web\bin\AAA.Online.Web.dll">
<Output TaskParameter="Assemblies" ItemName="myAssemblyInfo"/>
</GetAssemblyIdentity>
<PropertyGroup>
<Pattern>(\d+)\.(\d+)</Pattern>
<In>%(myAssemblyInfo.Version)</In>
<OutVersion>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</OutVersion>
</PropertyGroup>
</Target>
【问题讨论】:
-
你可以使用相对于 MSBuild 项目文件的路径,使用 $(MSBuildProjectDirectory) 属性吗?
-
teamcitty.build.working.dir 可以在命令行上注入到 MSBuild 构建参数中(类似 "/p:AgentWorkFolder=teamcity.build.working.dir" 可以在 MSBuild 上使用命令行)。请参阅 confluence.jetbrains.com/display/TCD8/… 然后在您的目标中使用 ... GetAssemblyIdentity AssemblyFiles="$(AgentWorkFolder)\..."。
标签: msbuild teamcity teamcity-8.0