如何将Visual Studio中的本地文件添加到Azure LocalResource“文件夹”?

时间:2015-07-11 17:11:54

标签: asp.net azure

我想知道如何使用Visual Studio在Azure Web实例上将文件导入“LocalResource”存储?我有一个Azure Web项目处理Web服务的部署细节。 (参见下面的相关ServiceDefintion.csdef文件片段)

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

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

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

谢谢, 戴夫格尔丁

...来自azure service 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>

1 个答案:

答案 0 :(得分:2)

您无法在Visual Studio中使用本地资源文件夹。因为这些是位于实例上的文件夹,所以在部署应用程序之后。

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

最多可以做的是将文件部署到Azure Blob Storage。然后使用RoleEntryPoint的{​​{3}}方法将文件下载到本地资源文件夹中。或者使用OnStart来执行此操作。

startup task上有很好的教程,其中包含启动任务中best practices for Stratup tasks的参考。

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

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