gpt4 book ai didi

tfs - 我如何获得TFS 2010将每个项目构建到单独的目录?

转载 作者:行者123 更新时间:2023-12-03 11:39:42 25 4
gpt4 key购买 nike

在我们的项目中,我们希望我们的TFS构建将每个项目放置在放置文件夹下的自己的文件夹中,而不是将所有文件都放置在一个平面结构中。为了说明这一点,我们希望看到以下内容:

DropFolder/
Foo/
foo.exe
Bar/
bar.dll
Baz
baz.dll

这基本上是与 here相同的问题,但是由于我们使用的是基于工作流程的构建,因此这些解决方案似乎不起作用。使用CustomizableOutDir属性的解决方案看起来对我们来说是最合适的,但我无法识别该属性。我自定义了工作流,以将其作为命令行参数(/ p:CustomizableOutDir = true)传递给MSBuild,但似乎MSBuild只是忽略了它,并将输出放入工作流给定的OutDir中。

我查看了构建日志,可以看到CustomizableOutDir和OutDir属性都已在命令行args中设置为MSBuild。我仍然需要传入OutDir,以便最后可以将文件复制到TeamBuildOutDir。

知道为什么我的CustomizableOutDir参数无法识别,或者是否有更好的方法可以实现吗?

最佳答案

我想出了一个不错的方法。事实证明,由于您可以将OutDir设置为工作流中所需的任何内容,因此,如果将其设置为空字符串,MSBuild将改为使用项目特定的OutputPath。这使我们更加灵活。这是我的整个解决方案(基于默认的构建工作流程):

在“运行MSBuild”任务中,将OutDir设置为空字符串。在同一任务中,将CommandLineArguments设置为类似于以下内容。这将使您可以从项目中引用TFS默认的OutDir:

String.Format("/p:CommonOutputPath=""{0}\\""", outputDirectory)

在要复制到放置文件夹的每个项目中,如下设置OutputPath:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath Condition=" '$(CommonOutputPath)'=='' ">bin\Release\</OutputPath>
<OutputPath Condition=" '$(CommonOutputPath)'!='' ">$(CommonOutputPath)YourProjectName\bin\Release\</OutputPath>
</PropertyGroup>

检入所有内容,您应该拥有一个可以正常工作的构建,该构建将每个项目部署到放置文件夹下的自己的文件夹中。

关于tfs - 我如何获得TFS 2010将每个项目构建到单独的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com