Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Visual studio 2008 Team Foundation构建在平面目录结构中下降_Visual Studio 2008_Msbuild_Tfsbuild - Fatal编程技术网

Visual studio 2008 Team Foundation构建在平面目录结构中下降

Visual studio 2008 Team Foundation构建在平面目录结构中下降,visual-studio-2008,msbuild,tfsbuild,Visual Studio 2008,Msbuild,Tfsbuild,我正试图在我们的TF服务器上“修复”一个构建,该构建将所有内容放到一个大的平面放置中的放置文件夹中(而不是像本地构建那样放置在单独的项目转储中),我感到有点沮丧-老实说,这是我第一次使用MSBuild,这是我第一次使用它-它不是我从头配置的构建文件 我在网上找到了很多解决方案,其中大多数都很好。不幸的是,它似乎根本解决不了我的问题 在TFSBuild.proj中,我有一段代码,如下所示: <SolutionToBuild Include="$(BuildProjectFolderPath)

我正试图在我们的TF服务器上“修复”一个构建,该构建将所有内容放到一个大的平面放置中的放置文件夹中(而不是像本地构建那样放置在单独的项目转储中),我感到有点沮丧-老实说,这是我第一次使用MSBuild,这是我第一次使用它-它不是我从头配置的构建文件

我在网上找到了很多解决方案,其中大多数都很好。不幸的是,它似乎根本解决不了我的问题

在TFSBuild.proj中,我有一段代码,如下所示:

<SolutionToBuild Include="$(BuildProjectFolderPath)/../../mySolution.sln">
 <Targets>SomeProject\Project</Targets>
  <Properties>
    CustomizableOutDir=true;
  </Properties>
</SolutionToBuild>

SomeProject\Project
leoutdir=true;
据我所知,CustomizableOutDir确实设置为true,应该保留目录结构。我试着按照博客上的指示编辑一些项目文件,就像这样

<Target Name="AfterCompile" Condition="'$(TeamBuildOutDir)' != ''">
    <ItemGroup>
       <CompileOutputs Include="$(OutDir)\**\*" />
    </ItemGroup>
    <Copy 
      SourceFiles="@(CompileOutputs)"
      DestinationFolder=
      "$(TeamBuildOutDir)\ProjectName\%(RecursiveDir)" />
</Target>

但这种行为很奇怪——如果我编辑几个项目文件,我开始得到看起来可能是正确的解决方案,但仍然不够好——我得到了一个目录结构,其中包含像MyProj1和MyProj2这样的文件夹,但MyProj2似乎将MyProj1的所有输出都转储到其中(MyProj1的工作方式与我希望的一样)。除此之外,drop文件夹仍然将所有其他内容转储在一个大drop中(目录中包含此drop的副本)


有人知道是什么原因导致LeoutDir的行为不符合预期吗?或者我的csproj文件代码有问题吗?

我看到了一些关于如何将CustomizelOutDir属性传递给msbuild以获得解决方案的建议

  • 正如您在问题中所提供的,为SolutionToBuild项添加
    CustomizableOutDir=true
    。()
  • true
    添加到主属性组()
  • /p:customableoutdir=true
    添加到TFSBuild.rsp()
  • 我已经尝试了这三种方法,最后一个选项(TFSBuild.rsp命令行选项)是我唯一可以使用的选项。我将其与csproj文件中每个输出路径上的条件相结合,而不是一个后编译目标。例如

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <OutputPath Condition=" '$(TeamBuildOutDir)'=='' ">bin\debug\</OutputPath>
        <OutputPath Condition=" '$(TeamBuildOUtDir)'!='' ">$(TeamBuildOutDir)projectName</OutputPath>
    </PropertyGroup> 
    
    
    bin\debug\
    $(TeamBuildOutDir)项目名称
    
    方法1对我不起作用,方法2对我起作用。你就是那个人!发布应用程序包在Nuget上提供