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>关键是网站的“主”和"api“。我没有包含物理目录,因为正如预期的那样,当它们被放入解决方案中并指向解决方案中的项目文件时,"api“站点没有正确地打包,因为Visual包过程将只打包第一个站点(即"api”将所有未转换的.config文件和.cs文件打包到它的打包文件夹中,而“.cs”没有正确地打包-但这是已知的问题,因此我不会对此抱怨太多。
因此,为了解决这个问题,对于我的构建服务器,我想引入一个CSPACK步骤来正确地完成这个任务。我使用MSDEPLOY预先构建了"main“和"api”网站到一个临时位置,然后使用CSPACK创建包文件。
这在每次使用"CloudService077:需要为虚拟路径的主/ of角色“Discovery.UI指定物理目录时都会失败。
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中的项目目录位置(例如)
<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
发布于 2015-03-25 17:12:12
我知道这是很久之后的事实,但我也有无休止的麻烦与CSPACK。基本上不可能找到任何有用的信息。
我发现,如果你不正确地提供参数,你就会得到各种各样的“找不到物理目录.”“需要指定物理目录.”错误,有时包含您没有提供的目录。
多亏了这个powershell脚本,我才能够使用正确的格式执行它,并学到了以下内容:
/role:参数。/sites参数是您在这里指定的角色的扩展。/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
https://stackoverflow.com/questions/23628053
复制相似问题