在Azure程序包MSBuild进程中执行.py

时间:2012-04-06 12:49:40

标签: c# visual-studio-2010 azure msbuild

我发布了一个python脚本,在我发布它之后用我的web项目做我想做的一切。 目前它的工作方式是我在我的网站项目中使用“发布”到我的本地高清, 然后我手动运行我的.py并获得我想要的结果(缩小,更改名称,删除垃圾等)。之后,我使用FTP将输出上传到我的共享主机,我很好。

现在我正在转向Windows Azure,我找不到一种正常的方法来集成.py执行,因此它将创建一个我可以在我的云上使用的“Azure包”(甚至是手动方式来实现它) )。

我真的迷失了,它不是真正的后期构建,因为它改变了HTML中的一些代码,我不希望它改变解决方案的原始HTML - 只发布/打包的。

1 个答案:

答案 0 :(得分:2)

我为类似的情况做了什么,在我的每个web项目的后期构建中,我为每个项目的Post Build事件运行一个脚本,然后将所有文件复制到一个单独的部署文件夹。 (它会删除那里的所有文件,如果有的话并进行任何更改,例如清理空的或无用的目录)

第1步 - 创建帖子构建脚本

我做了我的批处理文件,但你可以使用任何东西。

在这个脚本中我有类似于

的行
RMDIR "C:\Visual Studio 2010\Projects\Promotion\Deployment\FacebookApp" /S /Q
xcopy "C:\Visual Studio 2010\Projects\Promotion\FacebookApp" "C:\Visual Studio 2010\Projects\Promotion\Deployment\FacebookApp\" /s /e
RMDIR "C:\Visual Studio 2010\Projects\Promotion\Deployment\FacebookApp\obj" /S /Q
RMDIR "C:\Visual Studio 2010\Projects\Promotion\Deployment\FacebookApp\Styles" /S /Q

将脚本添加到您的构建后事件

PostBuildEvent

步骤2 - 将Azure项目更改为指向新文件夹

然后我将我的Azure项目设置为指向包含项目的部署文件夹,而不是直接指向开发项目。

ServiceDefinition

在ServiceDefinition.csdef中这是我的例子

<Site name="FacebookApp" physicalDirectory="..\Deployment\FacebookApp">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="sub.domain.com" />
      <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="sub.domain.com" />
    </Bindings>
</Site>

(万一你想知道Endpoint1是端口80常规http而端点2是端口443 https)

我现在所做的就是重建我的项目,然后在Azure项目上点击发布,一切都完成了。等待30分钟后进行部署和更新:)