我正在尝试在我们的 TF 服务器上“修复”一个构建,它将所有内容都放入一个大的平放文件夹中(而不是像本地构建那样在单独的项目转储中),我有点沮丧 -老实说,这是我第一次使用 MSBuild,这有点被我抛弃了 - 这不是我从头开始配置的构建文件。
我在网上找到了一堆解决方案,大多数指向this blog,这看起来不错。不幸的是,它似乎根本无法解决我的问题。
在 TFSBuild.proj 中,我有一段代码,如下所示:
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../mySolution.sln">
<Targets>SomeProject\Project</Targets>
<Properties>
CustomizableOutDir=true;
</Properties>
</SolutionToBuild>
据我所知, CustomizableOutDir 确实设置为 true ,据称应该保留目录结构。我尝试按照博客中的说明编辑一些项目文件,就像这样......
<Target Name="AfterCompile" Condition="'$(TeamBuildOutDir)' != ''">
<ItemGroup>
<CompileOutputs Include="$(OutDir)\**\*" />
</ItemGroup>
<Copy
SourceFiles="@(CompileOutputs)"
DestinationFolder=
"$(TeamBuildOutDir)\ProjectName\%(RecursiveDir)" />
</Target>
但这行为很奇怪 - 如果我编辑几个项目文件,我开始得到看起来我可能正在接近正确的解决方案,但仍然不够好 - 我得到一个包含 MyProj1 和 MyProj2 等文件夹的目录结构,但 MyProj2 似乎到 of 将 MyProj1 的所有输出都转储到其中(MyProj1 像我希望的那样工作)。最重要的是,drop 文件夹仍将其他所有内容转储到一个大 drop 中(目录包含此 drop 的副本)。
有没有人知道是什么导致 CustomizableOutDir 无法按预期运行?还是我的 csproj 文件代码有问题?
最佳答案
我已经看到了一些关于如何将 CustomizableOutDir 属性传递给 msbuild 以获得解决方案的建议。
<Properties>CustomizableOutDir=true</Properties>
对于 SolutionToBuild 项。 ( What's the best way to get TFS to output each project to its own directory? ) <CustomizableOutDir>true</CustomizableOutDir>
到主 PropertyGroup ( TFS Build 2008 - Custom output directories ) /p:CustomizableOutDir=true
到 TFSBuild.rsp ( TFS Build 2008 - Custom output directories ) 我已经尝试了所有三种方法,最后一个选项(TFSBuild.rsp 命令行选项)是我唯一可以使用的方法。我将其与 csproj 文件中每个 OutputPath 的条件结合起来,而不是 AfterCompile 目标。例如。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath Condition=" '$(TeamBuildOutDir)'=='' ">bin\debug\</OutputPath>
<OutputPath Condition=" '$(TeamBuildOUtDir)'!='' ">$(TeamBuildOutDir)projectName</OutputPath>
</PropertyGroup>
关于visual-studio-2008 - Team Foundation Build 在平面目录结构中下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195648/