MsBuild 在不使用发布配置文件的情况下发布网站

MsBuild publish website without using publish profile

发布配置文件 发布Visual Studio 网站可以从 Visual Studio 2013 发布对话框和命令行 MsBuild 中使用,如前所述在这个问题中 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 附加到我的路径)。

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

/p:publishUrl=pathToPublishHere

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

publish.bat

SET PROJECT="D:\Github\MyWebSite.csproj"
SET MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.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。