Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TeamCity-将工件依赖项的文件路径映射到系统属性_C#_Msbuild_Continuous Integration_Teamcity - Fatal编程技术网

C# TeamCity-将工件依赖项的文件路径映射到系统属性

C# TeamCity-将工件依赖项的文件路径映射到系统属性,c#,msbuild,continuous-integration,teamcity,C#,Msbuild,Continuous Integration,Teamcity,我将TeamCity用作CI服务器,并且有一个具有两种构建配置的场景。构建配置A生成工件文件A。构建配置B在A上具有工件依赖项,并且从同一链构建 我需要在B上配置一个系统属性(以便将其输入到MSBuild),该属性包含指向文件a的完整文件路径。是否可以使用参数引用或以其他方式获取它?在生成B和生成a之间的工件规则中,您可以指定相对于要复制文件a的生成代理工作目录的目标路径。例如: RelativePath/FileA=>RelativePath 然后您可以在Build B中定义系统参数,如 sy

我将TeamCity用作CI服务器,并且有一个具有两种构建配置的场景。构建配置
A
生成工件
文件A
。构建配置
B
A
上具有
工件依赖项
,并且从同一链构建


我需要在
B
上配置一个
系统属性
(以便将其输入到MSBuild),该属性包含指向
文件a
的完整文件路径。是否可以使用参数引用或以其他方式获取它?

生成B
生成a
之间的工件规则中,您可以指定相对于要复制
文件a
的生成代理工作目录的目标路径。例如:

RelativePath/FileA=>RelativePath

然后您可以在
Build B
中定义系统参数,如

system.MsBuildProperty=%teamcity.build.checkoutDir%/RelativePath/FileA

这将为您提供
构建B
的签出目录中
文件A
的完整路径。这将正常传递给MSBuild。如果您在
构建B
中的
构建A
的签出目录中查找到
文件A
的完整文件路径,则这是另一种情况,因为它们可能在不同的代理上运行


希望这将为您提供一些可行的方法,让我们知道它是如何进行的。

有没有办法从Team City变量中获取
文件a
的名称?该文件在每次生成后都会附加一个版本号(因此它实际上是
文件a 1.2.3.xx
)。如果不必在构建配置B中从构建配置A复制构建
文件A
文件名的逻辑,那就太好了。据我所知。。。但是MSBuild在
Include
attrs中支持通配符。您可以尝试将通配符值传递给MSBuild,并使用类似于
的内容,并通过类似于
@(FileA)
的引用使用该值。。但我不知道你的MSBuild脚本是什么样子。很有趣!这包括
csproj
文件吗?上下文是我有一个项目文件()。在第122行,我引用了一个静态nuget包,该包将嵌入到生成的VS包(vsix)中。我已经在构建A中构建了Nuget包,并希望构建B(building ItemTemplate.Pacakge.csproj)用Team City构建的Nuget文件的引用替换第122行。好的,我明白你的意思了。好吧,既然
csproj
文件是MSBuild文件,那么通配符方法是有效的;您的NuGet pkg只不过是ItemGroup中所有其他内容节点的另一个内容节点。但这取决于您计划如何维护csproj文件,因为手动编辑它可能会导致VS集成等问题。这大致就是我的建议。