You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio 2026仅发布变更文件问题求助

问题描述

我的解决方案包含多个大型项目,其中部分项目和第三方依赖很少变更。在Visual Studio 2022及更早版本里,发布只会上传变更的文件,耗时最多1分钟;但Visual Studio 2026每次都会发布所有文件,耗时超过15分钟。我已经配置了<SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>,尝试加<MSDeployUseChecksum>true</MSDeployUseChecksum>也没用。当前的pubxml配置如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project>
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>---MYURL----</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <ProjectGuid>-------------</ProjectGuid>
    <MSDeployServiceURL>----ftp.myhost...----</MSDeployServiceURL>
    <DeployIisAppPath>my path</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>true</EnableMSDeployBackup>
    <EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
    <UserName>sam.thinkka.co_dploy</UserName>
    <_SavePWD>true</_SavePWD>
    <TargetFramework>net6.0</TargetFramework>
    <SelfContained>false</SelfContained>
  </PropertyGroup>
</Project>
解决办法
  • 在pubxml的<PropertyGroup>节点里补充以下配置:
    <MSDeployUseChecksum>true</MSDeployUseChecksum>
    <EnableIncrementalMSDeploy>true</EnableIncrementalMSDeploy>
    <MSDeployFileCompareMode>Checksum</MSDeployFileCompareMode>
    
    其中EnableIncrementalMSDeploy是VS2026可能默认关闭的增量发布开关,必须显式开启;MSDeployFileCompareMode强制用校验和而非时间戳对比文件,避免本地与服务器时间不同步导致的全量发布误判。
  • 删除项目目录下的obj\Release\net6.0\PubTmp文件夹,这个缓存目录如果留存旧的文件哈希记录,会让VS误以为所有文件都需要重新上传。
  • 暂时关闭发布自动备份,把<EnableMSDeployBackup>true</EnableMSDeployBackup>改成<EnableMSDeployBackup>false</EnableMSDeployBackup>,备份操作会触发全量文件扫描,改为手动定期备份能减少发布时的额外开销。
  • 重新还原NuGet包,避免因VS2026构建逻辑变化,导致本地依赖文件哈希与服务器端不一致。

调整后的完整pubxml示例:

<?xml version="1.0" encoding="utf-8"?>
<Project>
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>---MYURL----</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <ProjectGuid>-------------</ProjectGuid>
    <MSDeployServiceURL>----ftp.myhost...----</MSDeployServiceURL>
    <DeployIisAppPath>my path</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>false</EnableMSDeployBackup>
    <EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
    <UserName>sam.thinkka.co_dploy</UserName>
    <_SavePWD>true</_SavePWD>
    <TargetFramework>net6.0</TargetFramework>
    <SelfContained>false</SelfContained>
    <MSDeployUseChecksum>true</MSDeployUseChecksum>
    <EnableIncrementalMSDeploy>true</EnableIncrementalMSDeploy>
    <MSDeployFileCompareMode>Checksum</MSDeployFileCompareMode>
  </PropertyGroup>
</Project>

内容的提问来源于stack exchange,提问作者Jamie Hartnoll

火山引擎 最新活动