2015-07-11 158 views
0

我想知道如何使用Visual Studio将文件转换为 Azure web实例上的“LocalResource”存储?我有一个Azure Web项目处理Web服务的部署细节。 (请参阅下面的相关ServiceDefintion.csdef文件片段)如何将Visual Studio中的本地文件添加到Azure LocalResource“文件夹”中?

Web服务的Azure项目已将一些额外文件复制到名为InstallLogs的LocalResource文件夹中,以确保4.52 .NET运行时安装在Azure计算机上。然而,不知怎的,为了支持这些归档资源而添加的“bin”文件夹以我不明白的方式与该命名路径相关。 (我使用Azure doc示例来获取该部分的工作。)

我无法弄清楚如何将文件资源添加到我添加的第二个LocalResource文件夹中,名为OpenNLPbins。本地资源正在创建,我可以通过远程调试获得一个有效的运行时路径,但无论我环顾四周,我都无法弄清楚我应该如何在Visual Studio中指定,即一堆本地二进制作为例子的文件(“EnglishSD.nbin”)在我发布时会被部署到OpenNLPbins“文件夹”中?

任何想法或帮助表示赞赏?

谢谢, 戴夫Gerding

...从蔚蓝的服务csdef ...

<LocalResources> 
<LocalStorage name="InstallLogs" sizeInMB="5" cleanOnRoleRecycle="false" /> 
<LocalStorage name="OpenNLPbins" sizeInMB="150" cleanOnRoleRecycle="false" />  
</LocalResources> 
<Startup> 
<Task commandLine="install.cmd" executionContext="elevated" taskType="simple"> 
<Environment> 
<Variable name="PathToInstallLogs"> 
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='InstallLogs']/@path" /> 
</Variable> 
</Environment> 
</Task> 
</Startup> 

回答

2

不能使用本地资源文件夹从Visual Studio中。由于这些是位于实例上的文件夹,所以在部署应用程序之后。

只能使用RoleEnvironment的静态方法GetLocalResource从代码中访问这些文件夹。

什么,充其量你能做的,就是部署你的文件在Azure Blob Storage。然后使用RoleEntryPointOnStart方法将文件下载到本地资源文件夹中。或者使用startup task这样做。

best practices for Stratup tasks上有很好的教程,其中包括how to use local resource在启动任务中的参考。

作为最后的手段,我从不建议这样做,您可以将这些文件包含在项目中,标记为“内容”和“始终复制到输出文件夹”,并且您可以使用RoleEntryPoint类来复制这些文件您的实例启动之前的文件(OnStart)。

如果可能的话,我总是希望将文件存储在Blob存储中并从那里下载。

相关问题