2013-09-29 77 views
1

我有兩個項目:LibExe如何在Visual Studio中複製引用項目的輸出

項目Lib生成PostBuildEvent中的一些文件到$(TargetDir)。假設它是

echo Foo > $(TargetDir)\Readme.txt 

Exe引用LibCopy Local設置爲True

不幸的是沒有文件被複制到Exe的輸出目錄。

我該如何教VS/MSBuild複製我的文件,就像它複製項目項目Copy to Output Directory

+0

[MSBuild複製動態生成的文件作爲項目依賴項的一部分]的可能重複(http://stackoverflow.com/questions/14322391/msbuild-to-copy-dynamically-generated-files-as-part-of-項目依賴性) –

回答

0

你不能,至少不能直接:msbuild不會,也絕對不應該知道你在post build事件中創建文件,更不用說它會處理它們了。

要麼直接在最終應用的位置創建它們,要麼在Exe項目中添加額外的構建後事件以複製文件。在這兩種情況下,將公共輸出目錄定義爲msbuild文件中的特權並在兩個項目中導入該文件都很方便,因此兩者都可以引用該屬性。

2

我認爲它可以,如果你在Exe項目的Visual Studio項目文件添加一個AfterBuild目標像下面這樣做:

<Target Name="AfterBuild"> 
    <ItemGroup> 
     <LibProject Include="$(LibProjectDirectory)\Lib.csproj"/> 
    </ItemGroup> 
    <ItemGroup> 
     <LibOutput Include="%(LibProject.RootDir)%(LibProject.Directory)\bin\$(Configuration)\*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(LibOutput)" DestinationFolder="$(OutputPath)" /> 
    </Target> 

這假定Lib項目輸出去的%(LibProject.RootDir)%(LibProject.Directory)\bin\$(Configuration)默認位置。如果配置不同,則需要相應地更新LibOutput項目的Include參數。

相關問題