Мне было интересно, можно ли при публикации включить какую-либо подпапку из исключенной папки.
Да, это возможно.
Примечание: один момент, который мы должны знать, поскольку вы использовали элемент «ExcludeFoldersFromDeployment» в .pubxml для исключения всего каталога Folder1.Некоторые действия по развертыванию в файле .xxproj могут быть перезаписаны или затронуты им.
Итак, чтобы достичь вашей цели, мы должны выполнить два шага: 1. Скопировать подпапку в новую папку (новая папка в $ (ProjectDir) может быть лучше) 2. Добавить содержимое подпапки для публикациии выберите нужную структуру
Вот обходной путь:
1: добавьте свойство PreBuildEvent в файл .csproj.
<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 ссылается на структуру, которую вы хотите разместить в папке публикации.Если вам нужна папка 1, в которой после развертывания имеется только вложенная папка, измените ее на Folder1 / SubFolder1 или измените ее на SubFolder1, если вы хотите создать простую вложенную папку 1 в папке «Опубликовать».
Дополнительная информация о добавлении дополнительных файлов в папкуопубликовать см. здесь .