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

时间:2012-10-22 20:40:53

标签: msbuild visual-studio-2012 msdeploy

在Visual Studio 2012中,使用发布配置文件和Web部署可以简化部署过程。但是它仍然缺少一些东西,或者我可能还不知道如何使用它。

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

修改

适用于发布的命令行是

MSBuild.Exe MyProject.sln /p:Configuration=QA /p:DeployOnBuild=true;PublishProfile=PublishToQA;AllowUntrustedCertificate=true /p:authType=NTLM /p:UserName=

如果配置成为发布配置文件本身的一部分,我想省略/p:Configuration=QA

2 个答案:

答案 0 :(得分:5)

您的问题的一些答案。

  
      
  • 我更喜欢使用NTLM身份验证,而不在发布配置文件中存储用户名和密码(尤其是)。怎么能   这样做了吗?如果我将用户名和密码留空,我就是   提示它。有没有像手动修改.pubxml的方法   文件?
  •   

您的身份验证通常由托管Web Deploy的方式驱动。默认情况下,如果您使用的是Web管理服务,那么您将使用IIS用户进行身份验证。使用IIS用户,您可以控制哪些用户具有特定站点/应用程序的权限。您也可以将WMSVC配置为使用Windows身份验证。如果您在使用VS时遇到问题请告诉我。 如果您使用Remote Agent服务来托管Web Deploy,那么在这种情况下您将使用Windows身份验证。

  
      
  • 为什么用户名/密码存储在PublishProfileName.pubxml中,我已在源代码管理中检查过,而不是   每个用户本地的PublishProfileName.pubxml.user?我可以   至少保存用户名,但显然不希望检查   英寸
  •   

我们有另一种机制供您确定哪些信息是私人/共享的。除密码外,所有发布信息均为共享(并默认签入)。为了简化设计,您可以拥有共享的发布配置文件,也可以根本不共享发布配置文件。您没有介于某个字段共享的配置文件和其他字段之间没有的字段。此处的密码是特殊的,并在.pubxml.user文件中基于每个用户/每台计算机进行加密。

如果您希望拥有私有发布配置文件,则无法签入与发布配置文件对应的.pubxml文件。这些存储在Properties \ PublishProfiles(或My Project \ PublishProfiles for VB)中,只是将它们从项目中排除,不要检查文件。发布对话框在磁盘上查找配置文件,而不仅仅是在磁盘上的配置文件。该项目。一切都应该继续发挥作用。

我们不支持在.pubxml.user文件中有选择地存储值的概念。发布对话框仅在该文件中存储一定数量的值。而不是

  
      
  • 配置本身不属于PublishProfileName.pubxml但存储在其中   PublishProfileName.pubxml.user LastUsedBuildConfiguration。{/ li>   
  • 与最后一点相同的平台。
  •   

这是一个错误,应该存储在.pubxml文件中,而不是.pubxml.user文件中。我们已经解决了这个问题,但还没有机会发布更新。

无法在发布配置文件中设置“配置”属性。 Configuration属性是构建过程的核心部分。更具体地说,我们没有调用此属性配置的原因是因为.pubxml文件在构建期间导入到.csproj / .vbproj的定义中。发布。由于其他属性是基于Configuration定义的,因此一旦设置了该值就无法更改。我只是在http://sedodream.com/2012/10/27/MSBuildHowToSetTheConfigurationProperty.aspx上写了关于这个主题的太多细节。此限制是MSBuild的事情,而不是发布限制。对于命令行,您应该按以下方式指定Configuration:     msbuild.exe myproj.csproj /p:...(其他属性)... / p:Configuration =

  
      
  • 我也缺少对多服务器部署的支持。除了发布配置文件之外,我目前不得不使用批处理文件。
  •   

我们没有这方面的直接支持,但如果您扩展您的需求,我可能会提供帮助。仅供参考我有一个您可能感兴趣的扩展程序。我已将{5}视频发布到http://sedodream.com/2012/03/14/PackageWebUpdatedAndVideoBelow.aspx

答案 1 :(得分:0)

您可以自由(并鼓励)手动编辑pubxml文件,因此请随时删除密码。

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

PlatformConfiguration仍然是构建配置,user文件只存储它们,因此Visual Studio知道您部署的最后一个配置是什么。

通过多服务器,您的意思是网络服务器场吗?如果是这样,您可以尝试查看Web Farm Framework,它基本上执行从主服务器到其他服务器的MSDeploy同步。

或者,您可以切换到命令行并使用postSync上传并执行远程服务器上的批处理文件,从那里触发其他部署。