如何配置MSBuild以将已保存的publishProfile用于WebDeploy?

Jim*_*rts 32 msbuild visual-studio-2010 msdeploy webdeploy

我使用Visual Studio来创建发布配置文件.它将该信息保存到MyProject.Publish.xml,它位于项目目录的根目录中.

我希望在我的CI服务器上执行的MSBuild任务将该文件用作其基本设置.理想情况下,如果我可以通过命令行参数覆盖属性,那就会摇滚.

这可能吗?如果是这样,语法是什么?

例如,我正在寻找类似的东西:

MSBuild MyProject.csproj /P:UsePublishProfile=True /P:UserName=deployUser /P:Password=MyPassword
Run Code Online (Sandbox Code Playgroud)

Say*_*imi 43

我很遗憾地告诉你,VS2010使用的publish.xml文件并不是以这种方式使用的.事实上,它甚至没有设计为与其他人签到/共享.

读/写这些文件的逻辑严格包含在Visual Studio中,不能通过MSBuild获得.所以今天没有直截了当的做法.调用msbuild.exe时,必须传入单个属性名称/值.您可以看到我在Team Build中回答的类似问题:使用MSDeploy本地发布以获取更多信息.

VS 11开发人员预览的注意事项

您知道我们已经在即将推出的Visual Studio版本中解决了这个问题.您可以通过下载VS 11开发人员预览来查看.现在,所有配置文件都保存到自己的文件中(在"解决方案资源管理器"的"属性"节点中的"PublishProfiles"下).它们现在设计为签入并与团队成员共享.这些文件现在是MSBuild文件,您可以根据需要自定义它们.要从命令行发布,只需传递DeployOnBuild = true并将PublishProfile设置为配置文件的名称.例如:

msbuild.exe MyProject.csproj /p:DeployOnBuild=true;PublishProfile=MyProfile
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,为了使任何其他Web转换正常工作,您还必须将/ p:Configuration = MyConfiguration添加到命令行参数 (17认同)
  • 如何使用EncryptedPassword以便您不必在配置文件中添加<Password>节点以使其在没有命令参数的情况下运行? (6认同)
  • @Doug你不能.EncryptedPassword只能在生成的同一台机器/用户上解密.对于构建服务器方案,您需要处理加密/解密.您需要从某些加密源设置Password属性. (2认同)