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




