通过MSBuild进行MSDeploy的有效参数

61
6个回答

118

以下是我为自己参考编制的列表,以及可以使用的一些合法值。请注意,这些值使用/p:<PropertyName>=<Value>语法传递给MSBuild。

  • DeployOnBuild(生成时部署)
    • True(是)
    • False(否)
  • DeployTarget(部署目标)
    • MsDeployPublish(MSDeploy发布)
    • Package(包)
  • Configuration(配置)
    • 有效解决方案配置的名称
  • CreatePackageOnPublish(发布时创建包)
    • True(是)
    • False(否)
  • DeployIisAppPath(部署到IIS应用程序路径)
    • <Web Site Name>/<Folder>(网站名称/文件夹)
  • MsDeployServiceUrl(MSDeploy服务URL)
    • 要使用的MSDeploy安装位置
  • MsDeployPublishMethod(MSDeploy发布方法)
    • WMSVC (Web 管理服务)(Web Management Service)
    • RemoteAgent(远程代理)
  • AllowUntrustedCertificate(与自签名SSL证书一起使用)
    • True(是)
    • False(否)
  • UserName(用户名)
  • Password(密码)
  • SkipExtraFilesOnServer(仅留下现有的非冲突文件)
    • True(是)
    • False(否)

2
我今天也找到了这个:/p:SkipExtraFilesOnServer=True这相当于使用WebDeploy进行右键发布时的复选框:“在目标位置保留额外文件(不要删除)”。 - Ben Barreth
感谢@BenBarreth - 我已将SkipExtraFilesOnServer添加到列表中。 - Philip Hanson
21
这里是来自MSDN的类,包含这些属性。文档质量仍然不太好,但至少它是一个完整的列表。 - JCisar
最好的事情。感谢您提出这个问题和答案。 - theo
我在列表中(包括MSDN的列表)没有找到这个:/p:ProjectParametersXMLFile=parameters_release.xml,它将指向另一个用于Web部署包和发布的参数文件。 - cederlof
那么,如果我想删除服务器上除了某个目录(跳过)之外的所有文件,是否只需要在我的Web应用程序项目文件中创建目标即可? - The Muffin Man

8

很不幸,目前关于此的文档几乎不存在。如果各种博客文章和论坛帖子不够全面,您可以查看 MSDeploy 使用的 .target 文件,以了解各种属性的使用方式,但需要花费大量时间来浏览大量的 XML。

在我的机器上,它位于这里:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

1
对于那些需要帮助理解 Dylan 所说的 XML 内容的人,PropertyGroup 标签包含您可以传递给 MSBuild 的参数。 - bowserm

4

我不知道这是否是你要找的,但你可以使用msdeploy命令并带上/?参数,它会显示一个有效参数列表。


1

WebDeploy配置一个自包含的.NET Core2应用程序。注意两个必需属性:

缺少RuntimeIdentifier会抛出以下错误:

error NETSDK1031:构建或发布自包含应用程序时未指定RuntimeIdentifier是不支持的。请指定RuntimeIdentifier或将SelfContained设置为false。

缺少DeployIisAppPath可能会抛出以下错误:

错误:属性'DeployIisAppPath'必须非空。

如果您将参数传递给dotnet publish,请避免使用/p:DeployOnBuild=false产生循环依赖。

错误MSB4006:目标依赖项图中涉及目标“Publish”的循环依赖关系。

完整的命令行WebDeploy配置:

/P:WebPublishMethod=MSDeploy
/P:DeployOnBuild=True 
/P:DeployTarget=MsDeployPublish 
/P:TargetFramework=netcoreapp2.0 
/P:SelfContained=true 
/P:MsDeployServiceUrl=https://my_subdomain.jobit.io:8172/MsDeploy.axd?site=subdomain_path
/P:AllowUntrustedCertificate=True 
/P:MSDeployPublishMethod=WMSvc 
/P:CreatePackageOnPublish=True 
/P:UserName=OTB
/P:Password=Expert 
/P:RuntimeIdentifier=win-x86
/P:DeployIisAppPath=subdomain_path

我喜欢使用这个配置,这样我就可以获得裸文件以进行复制粘贴(我不喜欢任何特殊的打包方式,因为它们太难以理解)。-c $(buildConfiguration) -o $(build.artifactStagingDirectory) -p:DeployOnBuild=false -p:DeployDefaultTarget=WebPublish -p:WebPublishMethod=FileSystem -p:DeleteExistingFiles=True - Kat Lim Ruiz

1
这个怎么样:/p:IncrementalBuild=True?

1

这里有更多关于Sharepoint的内容https://msdn.microsoft.com/en-us/ff622991.aspx

在构建中创建一个包: /p:IsPackaging=true

在相同的输出目录设置发布目录: /p:PublishDir= 当您的解决方案包含多个应用程序项目时,请设置以下参数以生成特定于应用程序的发布目录。 /p:AppSpecificPublishOutputs=true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接