2009-01-16 50 views
2

我有這樣的團隊建設目標設置到編譯後團隊建設,拷貝文件的對象問題

<Target Name="AfterCompile"> 
    <Copy SourceFiles="$(SolutionRoot)\Development_VS2008\MyCompanyName.SharePoint.12" DestinationFolder="c:\testing"></Copy> 
    </Target> 

我想從源複製到目標文件夾結構...

令人驚訝的是,我得到這個錯誤

無法複製文件 「C:\ TFS \ NightlyBuild的\ Sources \ Development_VS2008 \ MyCompanyName.SharePoint.12 \」 到目標文件 「C:\測試\」,因爲該目標是一個文件夾,插件一個文件的tead。 要將源文件複製到文件夾中,請考慮使用DestinationFolder參數而不是DestinationFiles。

正如你所看到的,我確實使用了destinationfolder參數,有沒有人知道我在做什麼錯?

回答

4

我想這可能只是因爲SourceFiles是一個目錄而不是你想要複製的文件。試試這個:

<Target Name="AfterCompile"> 
    <ItemGroup> 
     <FilesToCopy Include="$(SolutionRoot)\Development_VS2008\MyCompanyName.SharePoint.12\**\*.*"/> 
    </ItemGroup> 

    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="c:\testing\%(RecursiveDir)"/> 
</Target> 
+0

這種有點作品,至少它沒有失敗,但它不保留目的地文件夾中的目錄結構,任何想法如何保持結構在另一邊? – 2009-01-16 10:20:41

+0

已更新我的帖子。 – 2009-01-16 10:57:37

0

我們遇到了很多postbuild xcopy命令的問題。我們決定避免使用xcopy命令。

我們現在包括文件(這是我們想要複製)到項目,我們正在設置複製本地屬性設置爲「複製,如果新」和目標目錄(目錄結構必須在項目相同)

它幫助很多。
也許它也適合你的情況。

2

你需要的東西像這樣:

<CreateItem Include="someFolder\**\*.*"> 

    <Output ItemName="files" TaskParameter="Include" /> 

</CreateItem> 

<Copy SourceFiles="@(files)" DestinationFiles="@(files->'C:\folder\%(relativedir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" /> 

或替代地,我發現最簡單的方法(如果你想成爲什麼,包括多一點嚴格的/不包括)與一些自定義的MSBuild任務我寫過:http://www.aaron-powell.com/blog.aspx?cat=AaronPowell.MSBuild.Tasks

您提供了源目錄,目標方向(提供了對網絡共享的支持)以及要排除的文件名/擴展名。

這主要是因爲Team Build在運行時造成了一個真正的混亂(特別是對於web應用程序)並且它不可能使用標準的MSBuild複製任務。

0

複製任務顯然不支持複製目錄(因爲它基於'複製'),並且由於源(> 256個字符)中的長文件名,xcopy有時會失敗。

我這樣做(與ROBOCOPY): <Exec WorkingDirectory="$(MSBuildProjectDirectory)" Command='robocopy $(MSBuildProjectDirectory)\Main $(DropLocation) /S /COPY:DATS /NP /NFL /NDL /v' ContinueOnError="true" />

0

我有完全一樣的消息:

錯誤103無法將文件 「OBJ \發佈\ xxxx.dll」 複製到目標文件「 bin \ Release \ xxxx.dll「,因爲目標是文件夾而不是文件。要將源文件複製到文件夾中,請考慮使用DestinationFolder參數而不是DestinationFiles。xxxx

它發生了(我不知道爲什麼),我在發佈文件夾中具有與程序集相同名稱(包括擴展名)的另一個文件夾,因此Visual Studio無法在那裏創建程序集。這不是項目或解決方案中的配置,因此我剛剛刪除了該文件夾(我不知道它是如何創建的)並且它工作正常。