我想知道是否可以在发布时包含一些排除文件夹的子文件夹。
是的,这是可能的。
注意:有一点我们应该知道,因为您在 .pubxml 中使用了“ExcludeFoldersFromDeployment”元素来排除整个 Folder1 目录。.xxproj 文件中的一些部署操作可能会被它覆盖或影响。
因此,要实现您的目标,我们必须遵循两个步骤: 1. 将 SubFolder 复制到一个新文件夹($(ProjectDir) 中的新文件夹会更好) 2. 添加要发布的 SubFolder 的内容,并选择您的结构想
这是一个解决方法:
1:在 .csproj 文件中添加 PreBuildEvent prorerty。
<PropertyGroup>
<PreBuildEvent>xcopy "$(ProjectDir)/Folder1/SubFolder1" "$(ProjectDir)/NewFolder" /E /Y /I</PreBuildEvent>
</PropertyGroup>
2:在 .csproj 文件中添加以下标记,它有助于将额外的文件发布到 Asp.net 中的发布文件夹:
<PropertyGroup>
<PipelineCollectFilesPhaseDependsOn>
CustomCollectFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="NewFolder\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>MyStructureUnderPublishFolder\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
对于这个标记,我们只需要更改两条路径即可满足我们的需求。
第一:CustomFiles 指的是要发布内容的文件夹。
第二:MyStructureUnderPublishFolder 是指发布文件夹下你想要的结构。如果您想要一个在部署后只有一个子文件夹的 Folder1,请将其更改为 Folder1/SubFolder1,或者如果您希望在 Publish 文件夹下有一个简单的 Subfolder1,请将其更改为 SubFolder1。
有关添加额外文件以发布的更多信息,请参见此处。