2013-09-29 54 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参数。

相关问题