2011-08-16 58 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

相關問題