8

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

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

编辑

适合发布的命令行是

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

在此我想省略/p:Configuration=QA配置是否成为发布配置文件本身的一部分。

4

2 回答 2

5

你的问题的一些答案。

  • 我更喜欢使用 NTLM 身份验证,而不将用户名和密码(尤其是)存储在发布配置文件中。如何才能做到这一点?如果我将用户名和密码留空,系统会提示我输入。有没有像手动修改 .pubxml 文件的方法?

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

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

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

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

我们不支持在 .pubxml.user 文件中选择性地存储值的概念。发布对话框只会在该文件中存储一定数量的值。代替

  • 配置本身不是其中的一部分,PublishProfileName.pubxml而是存储 PublishProfileName.pubxml.userLastUsedBuildConfiguration.
  • 平台与最后一点相同。

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

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

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

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

于 2012-10-23T06:45:34.430 回答
0

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

要切换到 NTLM,AuthTypeNTLM在第一个PropertyGroup.

PlatformConfiguration保持构建配置,该user文件只存储它们,以便 Visual Studio 知道您部署的最后一个配置是什么。

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

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

于 2012-10-23T05:47:29.383 回答