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

MsBuild在不使用发布配置文件的情况下发布网站,msbuild,continuous-integration,Msbuild,Continuous Integration,发布Visual Studio网站的发布配置文件可以从Visual Studio 2013发布对话框和命令行MsBuild中使用,如本问题中所述 但是,我希望完全摆脱发布配置文件,并从命令行执行所有操作,因为我不希望发布路径硬编码在PublishProfile xml文件中。如何直接在命令行参数中指定相同的选项?我尝试改用OutDir,但这会导致与PublishProfile中指定的路径不同的行为(额外的\u PublishedWebsites附加到我的路径中)。您实际上可以从命令行覆盖Publ

发布Visual Studio网站的发布配置文件可以从Visual Studio 2013发布对话框和命令行MsBuild中使用,如本问题中所述


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

您实际上可以从命令行覆盖PublishProfile设置。您需要此参数:

/p:publishUrl=pathToPublishHere

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

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。

我现在正在生成一个临时发布配置文件xml文件,作为生成脚本的一部分,并在运行MSBuild后将其删除。我不确定我最初的问题是否有解决办法,但这是一个简单的解决办法。这确实奏效了。谢谢
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%