【发布时间】:2017-12-08 15:22:49
【问题描述】:
我在 VSTS 上使用托管构建代理来构建和部署云服务。
打包云服务时,cspack.exe 报错找不到虚拟路径的物理目录。
....
<WebRole name="MySite" vmsize="Small">
<Sites>
<Site name="Web">
<VirtualDirectory name="media" physicalDirectory="Z:\MySiteMedia" />
<Bindings>
....
ServiceDefinition.csdef:错误 CloudServices079:找不到 虚拟路径的物理目录“Z:\MySiteMedia” 网络/媒体/。
物理目录确实不存在于构建服务器上,但它存在于将要部署云服务的服务器上。这是一个 Azure 文件共享。
有解决办法吗?
更新
可以在构建代理上创建一个虚拟驱动器,该驱动器具有所需的驱动器号和文件夹。该驱动器可能指向另一个本地驱动器。例如,Z:\ 可能指向 C:\
例子:
net use Z: \\localhost\c$\MySiteMedia
这解决了构建问题,但是,它并没有解决实际问题。
经过一番挖掘,我发现 cspack 并没有像我最初想象的那样工作。当添加一个
<VirtualDirectory>
对于ServiceDefition,它获取该文件夹的内容并将其打包到cspkg 文件中。然后它会创建一个新文件夹,并将其放置在 siteroot 文件夹中,然后为该新文件夹创建一个虚拟目录。
例子:
变成
这意味着 Z:\ 上的 Azure 文件共享将不会被使用。
解决方法是在角色部署后使用 RoleEntryPoint 创建将虚拟目录添加到 IIS。
【问题讨论】:
标签: azure azure-cloud-services