首页 > 解决方案 > 未流向最终位置的已发布文件的修改

问题描述

我正在尝试从旧的 Web 部署项目方法过渡到使用 Visual Studio 2017 中的文件系统发布来发布我们的网站。

对于 Web 部署项目,当我们通过命令行运行 MSBuild 时,我们有一些任务来删除一些目录并重命名一些文件。在我用于 ClickOnce Publish 的 pubxml 文件中,我有这个:

<PropertyGroup>
    <PackageDir>$(IntermediateOutputPath)Package\PackageTmp</PackageDir>
</PropertyGroup>
<Target Name="CustomAfterPublish" AfterTargets="CopyAllFilesToSingleFolderForPackage">
    <RemoveDir Directories="$(PackageDir)\testcenter" />
</Target>

这确实会从临时位置删除 testcenter 文件夹,但该文件夹仍位于最终文件夹中。看来这是在文件移动到最终输出文件夹之前运行的,所以我不太确定它为什么在那里......

在我进行更改后,是否需要运行另一个目标或获取要复制的新文件列表的方法?

标签: visual-studiomsbuild

解决方案


未流向最终位置的已发布文件的修改

我可以通过自定义您的目标成功地做到这一点CustomAfterPublish,您应该确保在命令行中指定了 pubxml 文件,例如:

msbuild "YourSolutionPath\SolutionName.sln" /p:DeployOnBuild=true /p:PublishProfile=ProfileName.pubxml

另外,您可以将MSBuild日志更改为详细,以检查自定义目标是否执行成功(在Tools–> Options–> Projects and Solutions–>下Build and Run,将MSBuild项目构建输出详细程度更改为DetailedDiagnostic)。

此外,如果我们不想包含要发布的文件夹,我们可以通过.pubxml 或 .wpp.targets文件中的元素ExcludeFilesFromDeployment和元素中ExcludeFoldersFromDeployment的元素排除特定文件或文件夹,例如:PropertyGroup

<PropertyGroup>
  <ExcludeFoldersFromDeployment>
    $(PackageDir)\testcenter
  </ExcludeFoldersFromDeployment>
</PropertyGroup> 

有关更多详细信息,请参阅Visual Studio 和 ASP.NET 的 Web 部署常见问题解答。

希望这可以帮助。


推荐阅读