问题及解决:使用dotnet publish发布时Visual Stuido创建的配置文件中的路径失效


在Visual Stuido 2022中创建的项目需要发布到文件夹,使用Visual Studio的发布功能创建发布文件然后执行发布,一切正常,部署文件可以生成到预设的目录中。在Visual Studio中界面是这样的:

接下来,由于需要使用自动部署,希望使用命令行工具进行发布,这可以使用dotnet publish命令完成:
dotnet publish ./src/IDS4Admin.Admin/IDS4Admin.Admin.csproj /p:Configuration=Release /p:PublishProfile=FolderProfile3
这时问题出现了,生成的文件没有拷贝到预设的目录,而是在项目的bin/Release目录中又新创建了publish目录。仔细研究一下Visual Studio生成的部署配置文件FolderProfile3.pubxml,发现有些问题:

<?xml version="1.0" encoding="utf-8"?>


  
    False
    False
    True
    Release
    Any CPU
    FileSystem
    D:\Asp.Net Core\IdentityServer4Admin\IDS4Admin\Publish\Admin\x64std
    FileSystem
    
    net5.0
    win-x64
    698cac59-4332-4767-91e7-fe088b3220b0
    true
  

生成的路径使用的是PublishUrl,生成方法是WebPublishMethod,这应该有问题,文件路径应该使用PublishDir,生成的方法应该使用PublishProtocol,于是手工创建一个新的配置文件FolderProfile4.pubxml,修改上面两项内容:

	..\..\..\Publish\Admin\x64std
	FileSystem

使用命令行生成可以了,文件能够正确输出到预设的目录。可新的问题产生了,这个配置文件在Visual Studio中被认为是Web部署:

在Visual Studio中不能正确执行部署了。
从现象上看,似乎是Visual Studio把两种部署方式搞反了,在现实中,只能创建两个部署文件,一个用于命令行自动部署,一个用于Visual Studio手工生成。