#azure
#azure
Вопрос:
Я пытаюсь использовать функциональность sourceDirectory в файле определения службы, чтобы скопировать сначала содержимое «базового» каталога в веб-роль, а затем содержимое «Дополнительных файлов». Это отлично работает для отладки в Azure, однако при упаковке решения я получаю сообщение об ошибке «Доступ запрещен» при упаковке решения, если папка AdditionalFiles содержит файл в том же месте, что и в базовом каталоге.
Ошибка 7 Доступ к пути ‘C:UsersAlexAppDataLocalTempvo0niiyx.rvtrolesTestWebRole1approotconnectionStrings.config «отказано. C:Program Файлы (x86)MSBuild Microsoft VisualStudio v10.0 Windows Azure Tools 1.5 Microsoft.WindowsAzure.targets 2
Чтобы представить это в контексте, я работаю над переносом существующего приложения для запуска в Azure. Первый шаг, который я делаю, — это просто обернуть существующую функциональность, чтобы она просто запускалась в azure. Кроме того, исходная кодовая база быстро меняется, поэтому я хочу, чтобы мои настройки переноса были очень отдельными, чтобы избежать необходимости постоянно иметь дело со слиянием и т. Д. До сих пор я имел дело с этим с помощью некоторых сложных сценариев сборки powershell.
Для справки ниже приведены оба файла ServiceDefinition, которые я использую, а также структура каталогов моего решения. Я также столкнулся с той же проблемой при использовании рабочей роли.
<?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
Ответ №1:
Я не уверен, что это должно делать. Какие ConnectionStrings.config действительно должны быть включены? Я предполагаю, что он копируется из двух разных мест одновременно, и одно из них выходит из строя из-за одновременного доступа. Могу я спросить, почему вы копируете один и тот же файл дважды?
Комментарии:
1. Сценарий, в котором я нахожусь, заключается в том, что я оборачиваю существующее приложение для запуска в Azure. Поэтому я пытаюсь сохранить свои изменения отдельно от фактического приложения, выполнив следующие действия: 1) Скопируйте базовое приложение в веб-роль 2) Скопируйте мои дополнения поверх того, что было скопировано в 1 При простой отладке через Visual Studio, вышеуказанное работает нормально, как и ожидалось (хотя с предупреждением компилятора о том, чтофайл connectionstrings.config был заменен) Я получаю эту ошибку отказа в доступе только при публикации / развертывании.