gpt4 book ai didi

azure - CSPACK sitePhysicalDirectories 被忽略?

转载 作者:行者123 更新时间:2023-12-02 07:31:23 25 4
gpt4 key购买 nike

CSPACK 的另一个问题...

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

<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>

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

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

每次都会失败,并显示“CloudService077:需要为角色“Discovery.UI”的虚拟路径“main/”指定物理目录。但是,我在 CSPACK 中包含/sitePhysicalDirectories 值,即

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 Studio 中的项目目录位置(例如)

<Site name="main" physicalDirectory="..\..\..\discovery\Discovery.UI">

然后 CSPACK 失败,并显示 CloudServices079:无法找到虚拟路径 main/的物理目录“nnn”

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

如果我更新 ServiceDefinition 以使用相同的物理位置(例如 C:\....\nnnn 而不是我在 CSPACK 命令行中传递的“......\nnnn”,则一切正常!

所以看来 CSPACK 会忽略参数并且无法覆盖值,这不是我真正需要的。这是正确的还是我应该将其他内容传递给 CSPACK?

Azure SDK 2.3

最佳答案

我知道这已经是很久以后的事了,但我也对 CSPACK 遇到了无尽的麻烦。基本上不可能找到任何有用的信息。

我发现,如果您没有正确提供参数,您会收到各种“找不到物理目录...”和“需要指定物理目录...”错误,有时会使用您未提供的目录。

感谢this powershell script我能够使用正确的格式执行它并学到了这些东西:
1. 您必须指定 /role: 参数。 /sites 参数是您在此处指定的角色的扩展。
2. 将所有站点放入一个 /sites 参数或一个 /sitePhysicalDirectories 参数中。我在构建中使用 /sites 参数。

对于上面的例子,我会尝试:
cspack%root%\ServiceDefinition.csdef
/角色: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:%输出%/copyOnly

关于azure - CSPACK sitePhysicalDirectories 被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com