我有两个项目:Lib
和Exe
。
项目Lib
会在PostBuildEvent
中生成一些文件到$(TargetDir)
。假设它是
echo Foo > $(TargetDir)\Readme.txt
Exe
引用Lib
,Copy Local
设置为True
。
不幸的是,没有文件被复制到Exe
的输出目录。
我如何教VS / MSBuild复制我的文件,就像它使用Copy to Output Directory
复制项目项一样?
答案 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并在两个项目中导入该文件都很方便,因此两者都可以引用该属性。