我目前正在尝试通过将文件从blob存储中拉入角色并通过批处理脚本使用它进行自动化,从而将应用程序部署到Azure Worker角色,该批处理脚本也位于blob存储。我正在使用onStart完成此操作。这里是我的OnStart方法的简化版本:使用LocalResource自动化Azure中的应用程序部署
开始将其拉文件下来:
public override bool OnStart()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExist();
CloudBlob file = container.GetBlobReference("file.bat");
实际上得到的文件进入了角色:
LocalResource localResource = RoleEnvironment.GetLocalResource("localStore");
string filePath = System.IO.Path.Combine(localResource.RootPath, "file.bat");
using (var fileStream = System.IO.File.OpenWrite(@filePath))
{
file.DownloadToStream(fileStream);
}
这是我怎么弄批文件和依赖关系转化为角色。我现在的问题是 - 最初,我建立了批处理文件,假设其他文件将被放置在C:\
上。例如 - C:\installer.exe
,C:\archive.zip
等,但现在这些文件在localStorage中。
我在想我可以A)以某种方式通过动态写入脚本onStart来告诉批处理文件localStorage在哪里,或B)将localStorage更改为使用C:\
。
我不知道该怎么做,或者这里要做的最好的事情是什么。思考?
另一种可能性是通过路径到本地存储为输入到批处理文件。例如如果我有一个名为mycmd.bat的批处理文件,如下所示: ============= ECHO%1 ============= 如果我打电话给mycmd.bat“C:\ Program Files”,它只会在控制台上打印“C:\ Program Files”。 – 2012-08-06 07:53:03