我希望在每次构建时将特定目录复制到输出文件夹(“bin”)。我认为它可以通过构建后脚本来处理。但我不确定如何复制目录本身。我知道如何处理特定文件。
例如,这适用于文件:
在
项目 > 属性 > 构建事件 > 构建后
COPY "$(SolutionDir)Resources\Release Notes.pdf" "$(TargetDir)"
但是假设我有一个目录
Template
,现在我需要Template
下的所有内容在成功构建后bin
文件夹中维护文件夹结构。
我试过这个:
COPY "$(SolutionDir)Resources\Template\" "$(TargetDir)"
仅以这种方式复制
Template
目录中的文件,而不是子目录和 Template
文件夹中的文件。我希望文件夹 Template
本身位于我的输出 bin
文件夹中。换句话说,bin
应该看起来像:
bin > Template > abc.xxx
xxx.yyy
Subdirectory1 > asd.qwe
zxc.qwe
Subdirectory2 > ...
这可能是重复的,但我找不到相关的线程。谢谢。
我刚刚将其添加到我的 *.csproj 文件中(右键单击“编辑项目文件”)
<ItemGroup>
<Content Include="MYCUSTOMFOLDER\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
我认为为此目录需要与 *.csproj 文件处于同一层次结构级别或低于该层次结构级别。
这对我有用。
/S
是递归复制所有内容的键。
XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S
由于我希望每次都在没有提示的情况下覆盖文件,因此我还添加了一个
/Y
开关。
XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S /Y
尝试 XCOPY 而不是 COPY;例如
XCOPY "$(SolutionDir)Resources\Template\" "$(TargetDir)\Template" /s /i /y
有关 XCOPY 的更多信息请点击此处...
CodingYourLife的解决方案几乎对我有用,但我发现 PreserveNewest 没有受到尊重。我在 Visual Studio 论坛上找到了一个可以正常工作的解决方案。我的 .CSPROJ 现在看起来像这样:
<Content Include="assets\**">
<Link>assets\%(RecursiveDir)\%(Filename)%(Extension)</Link>
<TargetPath>assets\%(RecursiveDir)\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
注意:此解决方案需要 Visual Studio 16.10 或更高版本。
<ItemGroup>
<Content Include="..\Assets\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<DeploymentContent>true</DeploymentContent>
<Link>Assets\%(RecursiveDir)\%(Filename)%(Extension)</Link>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="DesignConfiguration\**">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<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>
<ItemGroup>
<ContentWithTargetPath Include="..\..\..\Libraries\Core\Business\Vodovoz.Reports\Reports\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>Reports\%(RecursiveDir)\%(Filename)%(Extension)</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
<ItemGroup>
<StaticFiles Include="wwwroot/**/*.*"/>
</ItemGroup>
<Target Name="CopyCustomContentBuild" AfterTargets="Build">
<Copy SourceFiles="@(StaticFiles)" DestinationFolder="$(OutDir)/wwwroot/%(RecursiveDir)" SkipUnchangedFiles="true" />
</Target>