如何在Visual Studio中复制引用项目的输出

时间:2013-09-29 21:41:03

标签: visual-studio-2012 msbuild

我有两个项目:LibExe

项目Lib会在PostBuildEvent中生成一些文件到$(TargetDir)。假设它是

echo Foo > $(TargetDir)\Readme.txt

Exe引用LibCopy Local设置为True

不幸的是,没有文件被复制到Exe的输出目录。

我如何教VS / MSBuild复制我的文件,就像它使用Copy to Output Directory复制项目项一样?

2 个答案:

答案 0 :(得分:2)

我认为如果在AfterBuild项目的Visual Studio项目文件中添加Exe目标,可以这样做:

  <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参数。

答案 1 :(得分:0)

你不能,至少不是直接的:msbuild不会,也绝对不应该知道你在post build事件中创建文件,更不用说它会处理它们了。

直接在最终位置创建它们,或者在Exe项目中添加额外的post build事件以复制文件。在这两种情况下,将公共输出目录定义为msbuild文件中的proprty并在两个项目中导入该文件都很方便,因此两者都可以引用该属性。