代码之家  ›  专栏  ›  技术社区  ›  Grzenio

msbuild中的项组

  •  1
  • Grzenio  · 技术社区  · 15 年前

    我有以下项目组:

      <ItemGroup>
        <ReleaseFiles Include="MyApp\*.ashx"/>
        <ReleaseFiles Include="MyApp\*.config"/>
        <ReleaseFiles Include="MyApp\bin\*.dll"/>
        <ReleaseFiles Include="MyApp\bin\*.exe"/>
        <ReleaseFiles Include="MyApp\bin\*.pdb"/>
        <ReleaseFiles Include="MyApp\bin\*.config"/>   
      </ItemGroup>
    

    以及以下复制目标:

    <Copy SourceFiles="@(ReleaseFiles)" DestinationFiles="@(ReleaseFiles->'\\$(DeploymentMachine)\C$\Program Files\MyApp\%(RecursiveDir)%(Filename)%(Extension)')" />
    

    但问题是bin目录没有被保留(所有的文件最终都在顶级目录中)。

    请注意,我需要使用相同的项目组来创建zipfile:

    <Zip Files="@(ReleaseFiles)" ZipFileName="$(server)\$(BUILD_NUMBER).$(BUILD_VCS_NUMBER)\myApp.zip" WorkingDirectory="MyApp"/>
    

    很好用。我怎样才能让复印件也能用呢?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Marcel Gosselin    15 年前

    您需要让msbuild引擎认为 bin 是递归文件夹的一部分。为此,请添加 * 在像这样的bin文件夹之后:

    <ItemGroup>
        <ReleaseFiles Include="MyApp\*.ashx"/>
        <ReleaseFiles Include="MyApp\*.config"/>
        <ReleaseFiles Include="MyApp\bin*\*.dll"/>
        <ReleaseFiles Include="MyApp\bin*\*.exe"/>
        <ReleaseFiles Include="MyApp\bin*\*.pdb"/>
        <ReleaseFiles Include="MyApp\bin*\*.config"/>   
    </ItemGroup>
    
        2
  •  0
  •   Filburt kukabuka    15 年前

    似乎混合了你的路径深度

    <ReleaseFiles/>
    

    中断递归。

    试试这个:

    <ItemGroup>
        <ReleaseFiles Include="MyApp\**\*.ashx" />
        <ReleaseFiles Include="MyApp\**\*.config" />
        <ReleaseFiles Include="MyApp\**\*.dll" />
        <ReleaseFiles Include="MyApp\**\*.exe" />
        <ReleaseFiles Include="MyApp\**\*.pdb" />
        <ReleaseFiles Include="MyApp\**\*.config" />
    </ItemGroup>
    
    <Copy SorceFiles="@(ReleaseFiles)" DestinationFiles="@(ReleaseFiles->'\\$(DeploymentMachine)\C$\Program Files\MyApp\%(RecursiveDir)%(Filename)%(Extension)')" />
    

    希望这能解决你的问题。

    更新

    我刚读到 using UNC paths 也可能导致此问题…但应该是 fixed in 3.5