首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSPACK sitePhysicalDirectories被忽略了?

CSPACK sitePhysicalDirectories被忽略了?
EN

Stack Overflow用户
提问于 2014-05-13 09:54:16
回答 1查看 563关注 0票数 2

CSPACK的另一个问题..。

我有一个这样的服务定义文件:

代码语言:javascript
复制
<ServiceDefinition name="core-eur" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-01.2.3">
    <LoadBalancerProbes>
        <LoadBalancerProbe name="discovery.probe" protocol="http" path="/HealthMonitoring" port="80" intervalInSeconds="8" timeoutInSeconds="16" />
    </LoadBalancerProbes>
    <WebRole name="Discovery.UI" vmsize="ExtraSmall" enableNativeCodeExecution="false">
        <Startup>
            <Task commandLine="startup\CreateCustomEventSource.cmd" executionContext="elevated" taskType="simple" />
        </Startup>
        <Sites>
            <Site name="main">
                <Bindings>
                    <Binding name="https.root" endpointName="https" hostHeader="testingblah.com" />
            </Site>
            <Site name="api" physicalDirectory="..\..\..\catalog\Catalog.Search.API">
                <Bindings>
                    <Binding name="https.root" endpointName="https" hostHeader="api.testingblah.com" />
                </Bindings>
            </Site>
        </Sites>
        <Endpoints>
            <InputEndpoint name="http" protocol="http" port="80" loadBalancerProbe="discovery.probe" />
            <InputEndpoint name="https" protocol="https" port="443" certificate="bibliothecatest.com" />
        </Endpoints>
        <Imports>
            <Import moduleName="RemoteAccess" />
            <Import moduleName="Diagnostics" />
            <Import moduleName="RemoteForwarder" />
        </Imports>
        <Certificates>
            <Certificate name="testingblah.com" storeLocation="LocalMachine" storeName="CA" />
        </Certificates>
    </WebRole>

关键是网站的“主”和"api“。我没有包含物理目录,因为正如预期的那样,当它们被放入解决方案中并指向解决方案中的项目文件时,"api“站点没有正确地打包,因为Visual包过程将只打包第一个站点(即"api”将所有未转换的.config文件和.cs文件打包到它的打包文件夹中,而“.cs”没有正确地打包-但这是已知的问题,因此我不会对此抱怨太多。

因此,为了解决这个问题,对于我的构建服务器,我想引入一个CSPACK步骤来正确地完成这个任务。我使用MSDEPLOY预先构建了"main“和"api”网站到一个临时位置,然后使用CSPACK创建包文件。

这在每次使用"CloudService077:需要为虚拟路径的主/ of角色“Discovery.UI指定物理目录时都会失败。

代码语言:javascript
复制
cspack %root%\ServiceDefinition.csdef ^
    /role:Discovery.UI;%compiled%\discovery\Discovery.UI\ ^
    /sitePhysicalDirectories:Discovery.UI;main;%compiled%\discovery\Discovery.UI\ ^
    /sitePhysicalDirectories:Discovery.UI;api;%compiled%\catalog\Catalog.Search.Api\ ^
    /rolePropertiesFile:Discovery.UI;Properties.txt ^
    /out:%output% /copyOnly

如果我将sitePhysicalDirectories属性放回ServiceDefinition文件中,并将其指向Visual中的项目目录位置(例如)

代码语言:javascript
复制
<Site name="main" physicalDirectory="..\..\..\discovery\Discovery.UI">

然后CSPACK在CloudServices079中失败:无法找到虚拟路径main/的物理目录"nnn“

这是尽管CSPACK命令行/sitePhysicalDirectories是正确的。正在发生的情况是,CSPACK获取ServiceDefinition值,应用相对路径值并指向完全错误的位置。

如果我更新ServiceDefinition以使用相同的物理位置(例如C:.\ in,而不是在CSPACK命令行中传递的"......\nnnn“,那么一切都能工作!

因此,CSPACK似乎忽略了参数,不能覆盖值,这不是我真正需要的。这是正确的,还是应该传递其他东西给CSPACK?

Azure SDK 2.3

EN

回答 1

Stack Overflow用户

发布于 2015-03-25 17:12:12

我知道这是很久之后的事实,但我也有无休止的麻烦与CSPACK。基本上不可能找到任何有用的信息。

我发现,如果你不正确地提供参数,你就会得到各种各样的“找不到物理目录.”“需要指定物理目录.”错误,有时包含您没有提供的目录。

多亏了这个powershell脚本,我才能够使用正确的格式执行它,并学到了以下内容:

  1. 您必须指定/role:参数。/sites参数是您在这里指定的角色的扩展。
  2. 将所有站点放在一个/sites参数或一个/sitePhysicalDirectories参数中。我在构建时使用了/sites参数。

对于上面的例子,我会尝试:cspack %root%\ServiceDefinition.csdef /role:Discovery.UI;%compiled%\discovery\Discovery.UI\ /sites:Discovery.UI;main;%compiled%\discovery\Discovery.UI\;api;%compiled%\catalog\Catalog.Search.Api\ /rolePropertiesFile:Discovery.UI;Properties.txt /out:%output% /copyOnly

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23628053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档