Visual studio 2010 开发->;阶段->;针对Azure网站的Git部署Prod

Visual studio 2010 开发->;阶段->;针对Azure网站的Git部署Prod,visual-studio-2010,azure,azure-git-deployment,Visual Studio 2010,Azure,Azure Git Deployment,使用Git部署for Azure,我应该如何最好地实现以下部署目标 在本地工作时,可以轻松切换以使用假内存数据或(最终)真实数据的非生产快照 部署到Azure上的暂存环境中,这样我首先可以使用假内存数据,最终可以移动到真实数据的非生产快照 使用真实数据部署到生产环境 我目前使用Github和一个临时分支部署到一个临时Azure网站。由于我部署到公共repo,git会忽略web.config文件。(编辑:我刚刚了解到忽略web.config实际上会导致azure上的部署错误) 非常感谢您的帮助

使用Git部署for Azure,我应该如何最好地实现以下部署目标

  • 在本地工作时,可以轻松切换以使用假内存数据或(最终)真实数据的非生产快照
  • 部署到Azure上的暂存环境中,这样我首先可以使用假内存数据,最终可以移动到真实数据的非生产快照
  • 使用真实数据部署到生产环境
我目前使用Github和一个临时分支部署到一个临时Azure网站。由于我部署到公共repo,git会忽略web.config文件。(编辑:我刚刚了解到忽略web.config实际上会导致azure上的部署错误)


非常感谢您的帮助/建议。

嗯。。。这是我现在做的对我有用的事情

  • 为了在本地伪内存数据之间快速切换,我使用编译符号
    LOCAL
    和预处理器指令
    #if LOCAL

  • 当您部署到Azure时,同样的编译符号也会起作用,所以我可以处理假数据,直到我准备好切换到真实数据库为止。如果我真的想更轻松地切换,我也可以使用应用程序设置

挑战是在本地保存一个带有“机密”(如连接字符串)的web.config,而不是将其公开给Github。我将其添加到.gitignore,但随后我在Azure上的部署开始失败,因为它找不到web.config。只是通过ftp将其复制到wwwroot没有帮助-Azure正在存储库中查找web.config

因此,为了实现这一点,我“稍微”改变了部署过程,首先将Web.config从wwwroot复制到存储库,然后再运行默认的deploy.cmd。这很简单-这就是你要做的:

  • 使用以下内容在存储库的根目录中创建
    .deployment
    文件:

    [配置] command=deploy.my.cmd

  • 使用以下脚本创建
    deploy.my.cmd

    xcopy%DEPLOYMENT\u TARGET%\Web.config%DEPLOYMENT\u SOURCE%\\\/Y

    deploy.cmd


  • 现在,我有了web.config,其中包含本地机密。Git忽略这个文件。我通过FTP将正确的web.config上传到Azure,每次部署时都会用到它。

    事实上应该比这更简单。请看。基本上,您的想法是在Azure门户中设置一些应用设置,以覆盖提交给您的回购的默认值。

    我做到了,David。我也读了你的博客。问题是,如果存储库中没有web.config,Azure将无法通过Github部署(即使它是通过FTP手动上载到wwwroot的)。我需要在本地保留真实的连接字符串,以连接到SQL Azure并部署它,但在公共Github存储库中不可见。另一个理想的解决方案是在Git中有一个“假”web.config,它将在Azure上运行时获取真实值并“在构建时转换”web.config通过类似web.local.config的方式在本地运行。但我无法让它工作。请注意,Azure构建几乎与在VS中执行“部署到文件系统”完全相同,因此您可以在本地重新处理相同的问题。您使用构建时转换的替代解决方案在理论上也应该有效。顺便说一句,对于git Azure问题来说,这可能是一个更好的地方。我将在Scott Hanselman的基础上进行另一次构建尝试