我目前正在尝试通过将文件从 blob 存储中拉入角色并通过批处理脚本(也位于 blob 存储中)使用它来自动将应用程序部署到 Azure Worker 角色。我正在使用 onStart 来完成此操作。这是我的 onStart 方法的简化版本:
准备拉下文件:
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:\
.
我不知道该怎么做,或者在这里做的最好的事情是什么。想法?