Не удается найти физический каталог для виртуального пути, в Windows Azure SDK проекта 1.8
Я обновил Windows Azure SDK с V1.7 до V1.8
До обновления часть моего конфига была
<Site name="Web">
<VirtualApplication name="MyprojectService" physicalDirectory="../../Myproject.Hosts.WebHost" />
</Site>
После обновления SDK
Я получаю следующую ошибку.
Ошибка 1 Не удается найти физический каталог 'D:\Projects\Myproject\branch \Release_092012\Hosts\Myproject.Hosts.AzureHost\MyprojectAzureHost\Myproject.Hosts.WebHost' для виртуального пути Web/MyprojectService/. D:\Projects\Myproject\branch \Release_092012\Hosts\Myproject.Hosts.AzureHost\MyprojectAzureHost\bin\Release\ServiceDefinition.csdef 1 1 MyprojectAzureHost
Я прошел по ссылке Azure Service.Csdef. и я добавил "../" к пути:
<Site name="Web">
<VirtualApplication name="MyprojectService" physicalDirectory="../../../Myproject.Hosts.WebHost" />
</Site>
но когда я делаю пакет, он автоматически удаляется, и я снова и снова получаю вышеуказанную ошибку.
Я также попытался поставить полный путь "D:/Projects/../Myproject.Hosts.WebHost", но без блокировки.
Он отлично работал в SDK 1.7. но не работает в SDK 1.8
2 ответа
Я попытаюсь объяснить изменения между двумя последними Windows Azure SDK (с помощью того же примера приложения), как показано ниже, поэтому, пожалуйста, посмотрите на каждый случай и путь, указанный в сообщении об ошибке:
В предыдущем SDK для источника виртуального каталога было задано значение по умолчанию в корне проекта, однако теперь в последнем SDK источник виртуального каталога установлен в выходном каталоге проекта, который вы можете видеть в первом случае ниже.
Случай 1: (не удалось)
<VirtualApplication name="MyWeb" physicalDirectory="MvcWebRole1">
Error: Cannot find the physical directory
'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\bin\Release\MvcWebRole1' for virtual path Web/MyWeb/.
Случай 2: (не удалось)
<VirtualApplication name="MyWeb" physicalDirectory="..\MvcWebRole1">
Error: Cannot find the physical directory 'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\bin\MvcWebRole1' for virtual path Web/MyWeb/.
Случай 3: (не удалось)
<VirtualApplication name="MyWeb" physicalDirectory="..\..\MvcWebRole1">
Error: Cannot find the physical directory 'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\MvcWebRole1' for virtual path Web/MyWeb/.
Дело 4: (Успех)
<VirtualApplication name="MyWeb"
physicalDirectory="..\..\..\MvcWebRole1">
Поскольку вышеупомянутый параметр папки случая № 4 совпадает с моей фактической структурой папки MvcWebRole1 (см. Ниже), именно поэтому параметр "......" работает в моем параметре "PhysicalDirectory".
Вам нужно будет пройтись по структуре папок от release* в качестве источника, а затем отследить весь путь, где бы он ни существовал, и затем собрать полный путь.
sudhAnsu63, извините это доставило вам неприятности.
При обновлении проекта с относительными путями в csdef (как здесь происходит) до 1.8 SDK вы должны увидеть предупреждение ниже в журнале обновлений об изменении относительного пути. Это конкретное изменение было сделано для лучшей поддержки параллельных сборок.
Атрибут physDirectory элемента Site содержит относительный путь. Этот путь относится к каталогу, в котором находится целевой файл определения службы при упаковке. В предыдущих версиях этот файл находился в корневом каталоге проекта. В этой версии по умолчанию этот файл находится в выходном каталоге проекта. Вам может потребоваться обновить относительный путь, чтобы отразить новое местоположение целевого файла определения сервиса.