1

我有两个项目:LibExe.

项目Lib生成一些文件PostBuildEvent$(TargetDir). 假设它是

echo Foo > $(TargetDir)\Readme.txt

Exe设置为Lib的引用。Copy LocalTrue

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

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

4

2 回答 2

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). 如果配置不同,则需要相应地更新LibOutputItem 的Include参数。

于 2013-09-30T09:34:02.693 回答
0

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

要么直接在它们应该结束的地方创建它们,要么在 Exe 项目中添加一个额外的构建后事件来复制文件。在这两种情况下,将公共输出目录定义为 msbuild 文件中的属性并将该文件导入两个项目中都很方便,因此两者都可以引用该属性。

于 2013-09-30T07:26:36.847 回答