Visual Studio 2019:"delete existing files" 发布配置文件中的选项消失了

Visual Studio 2019: "delete existing files" option in publish profile disappeared

我刚刚将 Visual Studio 的副本更新为 16.10 版本,然后发生了一些奇怪的事情:发布项目时,“删除现有文件”选项不再可编辑。您可以看到它,但是当打开编辑对话框时,没有复选框可以编辑它。

这里有一个截图来说明:

这是一个错误,还是有意为之? 是否有其他方法来设置该选项,或者它不再受支持?

我最初尝试将 <DeleteExistingFiles>true</DeleteExistingFiles> 添加到 pubxml 文件(在 VS 的 Properties 文件夹下)。不幸的是,这只会更新发布对话框,但对发布过程没有明显影响。

对于我的解决方法,我选择将此添加到构建事件:del /S /Q $(TargetDir)publish。它会在每次构建时清除我的发布目录——您必须更改“$(TargetDir)publish”以满足您的需要。解决方法有点矫枉过正,但可以说是更好的选择,因为在最近的 change/build.

之后,发布的文件被提取的可能性较小

在文本编辑器中打开 .pubxml 文件(我的是 Properties\PublishProfiles),update/add 将 DeleteExistingFiles 键设为 True。

我刚刚将 Visual Studio 更新到版本 16.11,他们似乎修复了它,该选项又回到了设置菜单中:

我认为关于@Phil 的回答,这两个动作在做不同的事情。

1。删除现有文件

这将在您实际部署时删除 Web 服务器上的现有文件。我没有看到任何来自 Microsoft 的有关此设置的文档,这令人沮丧。当您将应用程序发布到 Web 部署包并使用 IIS 中的导入功能导入应用程序时,同样的 功能 可用。你会得到这样的提示:

这与发布配置文件中的 DeleteExistingFiles 相同。

2。发布目录

删除publish目录是另一回事。发布目录是 msbuild /t:Publishmsbuild /t:Package 命令的工作目录。基本上,发布目录中的内容最终会出现在用于 Web 部署包或发布配置文件的 ZIP 文件中。如果发布目录中的文件不正确,您可能会在发布过程中遇到问题。例如,https://github.com/scottksmith95/LINQKit/issues/157。 遗憾的是,无法使用现有的 msbuild 或 dotnet cli 命令删除或清理发布目录: https://github.com/dotnet/sdk/issues/5972.

欢乐时光。所以@Phil 的 del 命令就是我们剩下的。