none
怎么部署Windows Azure 的ServiceDefinition.csdef文件 RRS feed

  • 问题

  • 我在ServiceDefinition.csdef这个文件中写了Startup,执行某安装程序,当我用vs publish 到云上的时候,这个安装程序会被执行且安装到云上。但当我用vs 打包然后用azure ui画面进行上传以后,发现打的包中没有ServiceDefinition.csdef这个文件,azure ui里只要求上传package和ServiceConfiguration.Cloud.cscfg这两个东西,不知道这时候ServiceDefinition.csdef文件中的startup应该怎么去执行。

    另外如果我通过pollshell去执行部署的话,startup是不是要写命令去自己执行,还是要调用下ServiceDefinition.csdef文件?

    2013年7月13日 14:08

答案

  • 你好,这个文件已经被打包到package里面了, 你可以尝试发布一下,你会发现startup是会执行的。

    所以不用担心startup不会执行,只要你写对了,不管用什么方式部署,在创建instance后都会执行startup。

    Powershell也是一样。


    Please mark as answer if it help!

    2013年7月14日 4:03
  • 我之前说的意义不明确, 我的意思是ServiceDefinition.csdef是一个服务定义文件,用来告诉Azure appfabric如何来host你这个project的。当你的cloud service打包的时候,他会读取你task节点下面的信息并在package文件下面的某个中做相应的处理(具体哪个文件不太清楚因为是乱码)。

    Azure appfabric会解析package文件并读取到你startup task, 并不一定是非要在package里面包含一个csdef文件,然后appfabirc要读取这个csdef文件。

    所以你不用纠结在非要在package里面找到这个csdef文件,能完成你startup task才是最重要的。

    建议你做如下测试

    1创建test.cmd,用来创建一个1.tet文件在你的C盘。

    2将这个cmd作为一个startup task。

    3打包你的项目并发布。

    4远程登录你的role instance并查看C盘下面是否有1.txt





    Please mark as answer if it help!


    2013年7月15日 4:47

全部回复

  • 你好,这个文件已经被打包到package里面了, 你可以尝试发布一下,你会发现startup是会执行的。

    所以不用担心startup不会执行,只要你写对了,不管用什么方式部署,在创建instance后都会执行startup。

    Powershell也是一样。


    Please mark as answer if it help!

    2013年7月14日 4:03
  • 我打包后的目录结构是如下这样的。

    Release(文件夹)

    -------app.publish(文件夹)

    -------ServiceConfiguration.cscfg(文件)

    -------ServiceDefinition.csdef(文件)

    然后app.publish文件文件夹里如下

    ServiceConfiguration.cscfg(文件)

    Test.cspkg(包)

    我把test包改成zip解压缩出来以后没有发现ServiceDefinition.csdef文件

    2013年7月15日 3:19
  • 我之前说的意义不明确, 我的意思是ServiceDefinition.csdef是一个服务定义文件,用来告诉Azure appfabric如何来host你这个project的。当你的cloud service打包的时候,他会读取你task节点下面的信息并在package文件下面的某个中做相应的处理(具体哪个文件不太清楚因为是乱码)。

    Azure appfabric会解析package文件并读取到你startup task, 并不一定是非要在package里面包含一个csdef文件,然后appfabirc要读取这个csdef文件。

    所以你不用纠结在非要在package里面找到这个csdef文件,能完成你startup task才是最重要的。

    建议你做如下测试

    1创建test.cmd,用来创建一个1.tet文件在你的C盘。

    2将这个cmd作为一个startup task。

    3打包你的项目并发布。

    4远程登录你的role instance并查看C盘下面是否有1.txt





    Please mark as answer if it help!


    2013年7月15日 4:47
  • 好的,非常感谢。我试一试
    2013年7月15日 7:56