我希望在每次构建时将特定目录复制到输出文件夹(" bin")。我认为它可以通过post build脚本来处理。但我不确定如何复制目录本身。我知道如何处理特定文件。
例如,这适用于文件:
在
项目>属性>构建活动>后期制作
COPY "$(SolutionDir)Resources\Release Notes.pdf" "$(TargetDir)"
但是假设我有一个目录Template
,现在我需要Template
下的所有内容在成功构建维护文件夹结构后来到bin
文件夹。< / p>
我试过了:
COPY "$(SolutionDir)Resources\Template\" "$(TargetDir)"
只有Template
目录中的文件以这种方式复制,而不是子目录和Template
文件夹中的文件。我希望文件夹Template
本身位于我的输出bin
文件夹中。换句话说,bin
应该如下所示:
bin > Template > abc.xxx
xxx.yyy
Subdirectory1 > asd.qwe
zxc.qwe
Subdirectory2 > ...
这可能是重复的,但我无法找到相关的帖子。感谢。
答案 0 :(得分:40)
这对我有用。 /S
是以递归方式复制所有内容的键。
XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S
由于我希望每次都没有提示时覆盖文件,我也添加了/Y
开关。
XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S /Y
答案 1 :(得分:20)
尝试XCOPY而不是COPY; e.g。
XCOPY "$(SolutionDir)Resources\Template\" "$(TargetDir)\Template" /s /i /y
这里有关于XCOPY的更多信息......
答案 2 :(得分:2)
我刚刚将其添加到我的* .csproj文件中(右键单击“编辑项目文件”)
<ItemGroup>
<Content Include="MYCUSTOMFOLDER\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
我认为为此,目录必须与* .csproj文件位于相同的层次结构级别,或者在其以下。
答案 3 :(得分:2)
截至本文发布之日,这是一个适用于 Visual Studio 2019 的附加解决方案。这将递归复制文件夹结构和其中的所有文件。在多项目解决方案中在 C++ .vcxproj 上进行测试。
首先,首先编辑您的 [ .proj / .vcxproj / .csproj ] 文件。打开后,找到您的项目范围标签。如果您已经有 ItemGroups,则将下面的代码直接粘贴到现有代码之后。否则,将其添加到 PropertyGroup 标记之前。然后修改您希望复制到输出路径的文件夹结构的 Include & Link 参数。
<ItemGroup>
<Content Include="..\Assets\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<DeploymentContent>true</DeploymentContent>
<Link>Assets\%(RecursiveDir)\%(Filename)%(Extension)</Link>
</Content>
</ItemGroup>
注意:如果您有多个顶级文件夹,如 JS、IMG、BIN 等,则为每个文件夹创建一个新条目。
答案 4 :(得分:0)
我对此问题有一个可行的解决方案:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<ItemGroup>
<CommonFont Include="..\common\src\Web\wwwroot\css\fonts\*.*" />
</ItemGroup>
<Copy SourceFiles="@(CommonFont)" DestinationFolder="wwwroot\css\fonts" SkipUnchangedFiles="true" />
</Target>