Msbuild 如何配置发布配置文件以使用NTLM身份验证

Msbuild 如何配置发布配置文件以使用NTLM身份验证,msbuild,visual-studio-2012,msdeploy,Msbuild,Visual Studio 2012,Msdeploy,在Visual Studio 2012中,将发布配置文件与web部署一起使用可以大大简化部署。然而,它仍然缺少一些东西,或者可能是我还不知道如何使用它 我更喜欢使用NTLM身份验证,而不在发布配置文件中存储用户名和密码(尤其是)。如何做到这一点?如果我将用户名和密码留空,系统会提示我输入用户名和密码。有没有类似于手动修改.pubxml文件的方法 为什么用户名/密码存储在我在源代码管理中检查过的PublishProfileName.pubxml中,而不是存储在每个用户本地的PublishProf

在Visual Studio 2012中,将发布配置文件与web部署一起使用可以大大简化部署。然而,它仍然缺少一些东西,或者可能是我还不知道如何使用它

  • 我更喜欢使用NTLM身份验证,而不在发布配置文件中存储用户名和密码(尤其是)。如何做到这一点?如果我将用户名和密码留空,系统会提示我输入用户名和密码。有没有类似于手动修改.pubxml文件的方法
  • 为什么用户名/密码存储在我在源代码管理中检查过的
    PublishProfileName.pubxml
    中,而不是存储在每个用户本地的
    PublishProfileName.pubxml.user
    中?我至少可以保存用户名,但显然不希望签入该用户名
  • 配置本身不是
    PublishProfileName.pubxml
    的一部分,而是作为
    LastUsedBuildConfiguration
    存储在
    PublishProfileName.pubxml.user
  • 平台与最后一点相同
  • 我还缺少对多服务器部署的支持。除发布配置文件外,我目前还被迫使用批处理文件
编辑

用于发布的命令行是

MSBuild.Exe MyProject.sln /p:Configuration=QA /p:DeployOnBuild=true;PublishProfile=PublishToQA;AllowUntrustedCertificate=true /p:authType=NTLM /p:UserName=
在本文中,如果配置本身成为发布配置文件的一部分,我想省略
/p:Configuration=QA

您可以(并且被鼓励)手动编辑您的
pubxml
文件,因此可以随意删除密码

要切换到NTLM,请将第一个
PropertyGroup
中的
AuthType
更改为
NTLM

Platform
Configuration
保留生成配置,
user
文件只存储它们,以便Visual Studio知道您上次部署的配置是什么

多服务器是指web场吗?如果是这样,您可以尝试查看基本上执行从主服务器到其他服务器的MSDeploy同步的


或者,您可以切换到命令行,并使用在远程服务器上上载和执行批处理文件,从而触发其他部署。

一些问题的答案

  • 我更喜欢使用NTLM身份验证,而不在发布配置文件中存储用户名和密码(尤其是)。怎么可能 这件事怎么办?如果我将用户名和密码留空,我将 提示它。有没有类似于手动修改.pubxml的方法 档案
您的身份验证通常由Web部署的宿主方式驱动。默认情况下,如果您使用的是Web管理服务,则使用IIS用户进行身份验证。使用IIS用户,您可以控制哪些用户对特定站点/应用程序具有权限。不过,您也可以将WMSVC配置为使用windows身份验证。如果您在这些场景中使用VS时遇到问题,请告诉我。 如果您使用远程代理服务托管Web Deploy,那么在本例中您将使用windows auth

  • 为什么用户名/密码存储在
    PublishProfileName.pubxml
    中,而我已在源代码管理中签入,但未在中签入
    PublishProfileName.pubxml.user
    是每个用户本地的吗?我可以 至少保存用户名,但显然不希望检查它 在
我们有另一种机制供您确定哪些信息是私有/共享的。除了密码之外,所有发布信息都是共享的(默认情况下是签入的)。为了简化设计,您可以使用共享的发布配置文件,也可以使用根本不共享的发布配置文件。在这两者之间,没有一个配置文件是共享的,而另一个是不共享的。密码在这里是特殊情况,并在.pubxml.user文件中按每个用户/每台机器进行加密

如果您想要一个私有发布配置文件,那么就不能签入与发布配置文件对应的.pubxml文件。这些文件存储在Properties\PublishProfiles(或我的Project\PublishProfiles for VB)中,只将它们从项目中排除,不签入文件。“发布”对话框查找磁盘上的配置文件,而不仅仅是项目中的配置文件。一切都应该继续运作

我们不支持在.pubxml.user文件中选择性存储值的概念。“发布”对话框将仅在该文件中存储一组值。而不是

  • 配置本身不是
    PublishProfileName.pubxml
    的一部分,而是存储在
    PublishProfileName.pubxml.user
    as
    LastUsedBuildConfiguration
  • 平台与最后一点相同
这是一个错误,它应该存储在.pubxml文件中,而不是.pubxml.user文件中。我们已经修复了这个问题,但是还没有机会发布更新

无法在发布配置文件中设置配置属性。配置属性是构建过程的核心部分。更具体地说,我们没有调用此属性配置的原因是,.pubxml文件在生成和发布期间导入到.csproj/.vbproj的定义中。由于其他属性是根据配置定义的,因此设置后无法更改该值。我只是在博客上写了太多关于这个问题的细节。此限制是MSBuild而不是发布限制。对于命令行,应按以下方式指定配置: msbuild.exe myproj.csproj/p:…(其他属性)/p:配置=

  • 我还缺少对多服务器部署的支持。除发布配置文件外,我目前还被迫使用批处理文件

我们对此没有直接的支持,但如果你能扩大你的需求,我也许能提供帮助。仅供参考,我有一个您可能感兴趣的扩展。我已将一段5分钟的视频发布到。

感谢Richard的回答。我没有编辑t