问题及解决:使用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"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>D:\Asp.Net Core\IdentityServer4Admin\IDS4Admin\Publish\Admin\x64std</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <TargetFramework>net5.0</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <ProjectGuid>698cac59-4332-4767-91e7-fe088b3220b0</ProjectGuid>
    <SelfContained>true</SelfContained>
  </PropertyGroup>
</Project>

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

	<PublishDir>..\..\..\Publish\Admin\x64std</PublishDir>
	<PublishProtocol>FileSystem</PublishProtocol>

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

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

posted @ 2021-11-25 16:24  寻找无名的特质  阅读(1317)  评论(1编辑  收藏  举报