2011-08-16 62 views
3

我可以从子目录中包含一个文件,但将它放在bulid的根目录中而不是其原始子目录中吗?msbuild include /从子目录复制到根目录 - 可能吗?

示例:针对不同版本配置,我们有多个robots.txt文件。该文件是在解决方案\ IncludeTest \开发\的robots.txt和\ IncludeTest \生产\的robots.txt

我可以动态地适当地抓住他们使用类似:

<ItemGroup Condition=" '$(Configuration)' == 'Development' "> 
    <Content Include="IncludeTest\Development\robots.txt"> 
     <SubType>Designer</SubType> 
    </Content> 
    </ItemGroup> 

,但是当我这样做, ,我维护\ IncludeTest \ Development \(或\ IncludeTest \ Production)目录。任何方式只是将其包含在robots.txt应该是的根目录中?

+0

您是否试过“.. \”来指定父目录? – sll

回答

1

ABO血型我仍然没有完全为我工作,但我可以根据你如何设置项目组找到解决办法:

将解决方案中的文件包含在中作为链接将其放入根目录中。用你的$(配置)提示,我可以做到这一点,只需将它作为链接动态添加,而不是将其复制到根目录。

<Content Include="..\Robots_Source\$(Configuration)\robots.txt"> 
    <Link>robots.txt</Link> 
</Content> 
+0

所以你已经尝试使用任务与更新的目标文件路径?我已经尝试过不同的情况,它完美的工作,基本上复制指定的文件到父文件夹,重要的一点是使用$(MSBuildProjectDirectory) – sll

0

不知道我收到了你的问题的权利,让我知道这个工作,你是否预期:

<ItemGroup> 
    <Content Include = "IncludeTest\$(Configuration)\robots.txt"> 
     <SubType>Designer</SubType> 
    </Content> 
    </ItemGroup> 

复制到根:

<Copy SourceFiles="@(Content)" 
    DestinationFiles="@(Content ->'..\%(RecursiveDir)%(Filename)%(Extension)')" /> 

编辑:这可能是问题,当文件在嵌套的目录,所以尝试:

<Copy SourceFiles="@(Content)" 
    DestinationFiles="@(Content ->'$(MSBuildProjectDirectory)..\%(RecursiveDir)%(Filename)%(Extension)')" /> 
+0

不幸的是,它并不像我想的那样。它所做的是将父文件夹结构(IncludeTest \ ...)放在根目录中,而不仅仅是文件robots.txt – dah97765

+0

如果你做了一些错误的操作,它应该只将包含在@(Content)中的文件移动到父目录中。只需在我的电脑上试试 – sll

+0

我在编辑中增加了一个选项,试试吧 – sll

相关问题