MsBuild 发布网站而不使用发布配置文件

Posted

技术标签:

【中文标题】MsBuild 发布网站而不使用发布配置文件【英文标题】:MsBuild publish website without using publish profile 【发布时间】:2015-11-16 16:55:23 【问题描述】:

可以从 Visual Studio 2013 发布对话框和命令行 MsBuild 使用 发布配置文件 发布 Visual Studio 网站,如本问题 Using msbuild to execute a File System Publish Profile

中所述
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
./ProjectRoot/MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=FileSystemDebug

但是,我想完全摆脱发布配置文件并从命令行执行所有操作 - 因为我不希望发布路径在 PublishProfile xml 文件中硬编码。如何直接在命令行参数中指定相同的选项?我已尝试改用 OutDir,但这会导致与 PublishProfile 中指定的路径不同的行为(在我的路径中附加了一个额外的 _PublishedWebsites)。

【问题讨论】:

我现在正在生成一个临时发布配置文件 xml 文件作为构建脚本的一部分,并在 MSBuild 运行后将其删除。我不确定我最初的问题是否有解决方案,但这是一个简单的解决方法。 【参考方案1】:

您实际上可以从命令行覆盖 PublishProfile 设置。你会想要这个参数:

/p:publishUrl=pathToPublishHere

如果它是本地文件系统,这应该可以正常工作。

【讨论】:

【参考方案2】:

publish.bat

SET PROJECT="D:\Github\MyWebSite.csproj"
SET MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"
SET PUBLISH_DIRECTORY="C:\MyWebsitePublished"

cd /d %MSBUILD_PATH%
MSBuild %PROJECT%  /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=%PUBLISH_DIRECTORY%

需要在服务器上安装 Visual Studio。

【讨论】:

以上是关于MsBuild 发布网站而不使用发布配置文件的主要内容,如果未能解决你的问题,请参考以下文章

怎样使用 MSBuild 自动编译和发布 NET 网站

使用 CruiseControl.NET 和 MSBuild 发布网站

Msbuild 正在发布所有文件夹和源代码

MsBuild 找不到发布配置文件

如何在 Azure Devops 中使用 msbuild 创建具有发布和调试配置的 nuget 文件

是否可以从命令行创建网站应用程序发布配置文件?