【发布时间】:2011-10-28 23:10:32
【问题描述】:
我正在尝试使用服务定义文件中的 SourceDirectory 功能,首先将“Base”目录的内容复制到 Web 角色,然后将“AdditionalFiles”的内容复制。这适用于在 Azure 中进行调试,但是在打包解决方案时,如果 AdditionalFiles 文件夹包含与 Base 目录相同位置的文件,则会在打包解决方案时收到 Accessed Denied 错误。
错误 7 对路径“C:\Users\Alex\AppData\Local\Temp\vo0niiyx.rvt\roles\TestWebRole1\approot\connectionStrings.config”的访问被拒绝。 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\1.5\Microsoft.WindowsAzure.targets 2
为了说明这一点,我正在努力将现有应用程序迁移到在 Azure 中运行。我正在做的第一步是简单地包装现有功能,以便它可以在 azure 中简单地运行。此外,原始代码库正在迅速变化,因此我想保持我的包装自定义非常独立,以避免不得不不断处理合并等问题。到目前为止,我一直在通过一些复杂的 powershell 构建脚本来处理这个问题。
作为参考,下面是我正在使用的 ServiceDefinition 文件,以及我的解决方案的目录结构。我在使用 Worker Role 时也遇到了同样的问题。
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureSourceDirectoryTest" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="TestWebRole1" vmsize="ExtraSmall">
<Contents>
<Content destination=".">
<SourceDirectory path="../Base" />
</Content>
<Content destination=".">
<SourceDirectory path="../AdditionalFiles" />
</Content>
</Contents>
<Endpoints>
<InputEndpoint protocol="http" port="80" name="Http" />
</Endpoints>
</WebRole>
</ServiceDefinition>
以及目录结构(基于 tree 命令的输出,删除了 bin 和 obj 文件夹的内容):
│ AzureSourceDirectoryTest.sln
│
├───AdditionalFiles
│ connectionStrings.config
│
├───AzureSourceDirectoryTest
│ │ AzureSourceDirectoryTest.ccproj
│ │ AzureSourceDirectoryTest.ccproj.user
│ │ ServiceConfiguration.Cloud.cscfg
│ │ ServiceConfiguration.Local.cscfg
│ │ ServiceDefinition.build.csdef
│ │ ServiceDefinition.csdef
│ ├───bin...
│ └───obj...
│
├───Base
│ connectionStrings.config
│
└───TestWebRole1
│ TestWebRole1.csproj
│ TestWebRole1.csproj.user
│
├───bin...
├───obj...
└───Properties
AssemblyInfo.cs
【问题讨论】:
标签: azure