如何使用TeamCity将此公共属性传递给MSBuild?
我正在使用TeamCity Visual Studio runner。我想添加一个无法从Visual Studio访问的设置如何使用TeamCity将此公共属性传递给MSBuild?,msbuild,teamcity,teamcity-7.0,Msbuild,Teamcity,Teamcity 7.0,我正在使用TeamCity Visual Studio runner。我想添加一个无法从Visual Studio访问的设置 /Property:FileAlignment=4096 我直接在构建步骤“命令行参数”中键入了该命令。构建日志显示错误: MSBuild命令行参数包含“/property:”或“/p:”参数。请改用生成参数 我不明白如何从TeamCity向MSBuild提供此信息并消除此警告 1.我应该使用哪种参数? 有三种: 配置参数 系统属性 环境变量 我不想要环境或系统变量
/Property:FileAlignment=4096
我直接在构建步骤“命令行参数”中键入了该命令。构建日志显示错误:
MSBuild命令行参数包含“/property:”或“/p:”参数。请改用生成参数
我不明白如何从TeamCity向MSBuild提供此信息并消除此警告
1.我应该使用哪种参数?
有三种:
- 配置参数
- 系统属性
- 环境变量
msbuild.exe
,而不是devenv.exe
)。我猜TeamCity正在构建一个类似
cmd> msbuild.exe my-solution.sln /p:FileAlignment=4096
我在命令行上尝试了这个方法,只是为了确保它能正常工作(我添加了/v:diagnostic
标志)。诊断详细性使msbuild将其所有属性打印到控制台。我验证了FileAlignment=4096
在那里
该/FileAlignment
属性似乎是自动出现在任何.csproj
文件中的。所以你该走了。通过单击任何生成并查看“生成参数”选项卡,可以检查传递给生成的实际参数。有一个部分显示了“代理上的实际参数”。(这是评论的-754个字符,因此必须作为帖子键入)
嗨,安东尼,谢谢你的回复!
是的,命令行上的msbuild对我来说也很好,项目文件可能存储文件对齐属性。在我们的例子中,在与Microsoft讨论后,除了修复项目(我已经完成了)之外,似乎有必要在命令参数中指定解决方案范围(即构建范围)的对齐方式
在GUI项(/Build-Step/Command-line-parameters/)上指定的任何参数都不会出现在/Build-parameters/选项卡上。当然,有些根本不会编译
而且我在使用时有更奇怪的行为
/冗长:诊断性的
vs
/冗长:最少
导致最小值的生成日志更长!似乎诊断是隐藏了一项特殊任务的细节,这是Teamcity的一部分,而不是我;
[16:24:05]:使用项目“C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets”中的目标“SatelliteDllsProjectOutputGroup”覆盖项目“C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.WinFX.targets”中的目标“SatelliteDllsProjectOutputGroup”。
我很难做到这一点,因为Teamcity生成的构建输出日志作为树状视图非常好。这适用于SLN构建,但使用任何bat文件都无法生成具有漂亮(大概是xml)树格式的日志文件
如果你有进一步的想法,我很乐意听到,谢谢你的编辑!:) 这个问题解决了。为了澄清,Anthony告诉我们如何使用MSBuild在命令行中解决这个问题。也可以使用devenv在命令行上解决此问题,根据Microsoft的票证,语法为:
devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512
然而,我想要的是让Teamcity的“VisualStudioBuild”接受该参数。这是通过以下方式实现的。在命令行参数框中,我输入了:
/Property:FileAlignment=filealignment v:diag
然后,生成参数的输出选项卡显示:
User Defined Parameters
Name Value passed to build
system.filealignment 512
system.verbosity diagnostic
您应该使用“系统属性”。别担心名字,TeamCity就是这么叫的。它们是正则属性。您可以在“编辑配置设置>7.生成参数”中添加它们
例如,可以按如下方式添加系统属性:
名称:system.FileAlignment
类型:系统属性(系统)
价值:4096
请注意,TeamCity将坚持使用“system.”前缀。这并不重要,因为MSBuild脚本仍将其视为$(FileAlignment) 这是我最初添加我的问题作为评论的项目。我的问题没有得到回答。我不清楚吗?和/或我应该在那里发布一个问题作为“答案”吗?嗨,安东尼,谢谢!我认为我的问题是不同的,因为我没有试图在msbuild编译前/编译后脚本中获取要替换的变量,而是将其传递给msbuild本身的命令行。因为这个特定命令产生的结果很小,所以我很难验证它的工作情况。我在想,也许我至少应该先尝试一个更明显的选项,看看它是否“需要”。但我还是不知道该怎么做。。。(因此,在我看来,这个问题不仅仅是一个细节,但可能我错了。)这让我很困惑,直到我意识到“配置参数”不是“系统属性”(它们没有.System前缀)。如果需要,可以从“配置参数”轻松创建“系统属性”。