不使用PublishProfile通过MSBuild发布ASP.NET MVC项目失败
解决MSBuild直接传递发布属性无法生成输出的问题
当你直接把发布配置文件中的属性写入MSBuild命令行时,出现无法在指定路径生成文件的情况,核心问题在于部分属性是只读记录字段而非实际构建参数,同时可能存在参数传递格式问题。以下是修正方案和原因说明:
修正后的MSBuild命令
msbuild "D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb.sln" /p:DeployOnBuild=true /p:Configuration=Release /p:Platform="Any CPU" /p:WebPublishMethod=FileSystem /p:PublishProvider=FileSystem /p:publishUrl="D:\Published" /p:PublishDir="D:\Published" /p:LaunchSiteAfterPublish=True /p:ExcludeApp_Data=False /p:DeleteExistingFiles=True
如果是在Windows命令提示符中使用多行命令,必须每行末尾加^续行符,否则参数会被截断:
msbuild "D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb.sln" ^ /p:DeployOnBuild=true ^ /p:Configuration=Release ^ /p:Platform="Any CPU" ^ /p:WebPublishMethod=FileSystem ^ /p:PublishProvider=FileSystem ^ /p:publishUrl="D:\Published" ^ /p:PublishDir="D:\Published" ^ /p:LaunchSiteAfterPublish=True ^ /p:ExcludeApp_Data=False ^ /p:DeleteExistingFiles=True
问题根源解析
LastUsedBuildConfiguration和LastUsedPlatform无效
这两个属性只是Visual Studio用来记录上次发布时的配置,MSBuild实际构建时不会用它们确定构建环境。必须显式指定Configuration=Release和Platform="Any CPU",这才是控制构建配置的核心参数。输出路径属性的兼容性
部分ASP.NET MVC的MSBuild目标中,需要同时指定publishUrl和PublishDir才能正确识别输出路径,仅传publishUrl可能导致路径不被识别。命令行续行格式错误
原命令的多行写法没有加续行符^,Windows命令提示符会把每行当成独立命令执行,导致后面的参数完全没有被传递给MSBuild,自然无法生成输出。
简化版命令(仅保留核心参数)
不需要传递所有配置属性,保留关键参数即可完成发布:
msbuild "D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb.sln" /p:DeployOnBuild=true /p:Configuration=Release /p:Platform="Any CPU" /p:WebPublishMethod=FileSystem /p:PublishDir="D:\Published" /p:DeleteExistingFiles=True
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

