簡體   English   中英

如何使用Visual Studio Team Services在單個服務上發布包含多個站點的Azure Cloud Services項目?

[英]How can I publish an Azure Cloud Services project with multiple sites on a single service using Visual Studio Team Services?

我有一個經典的Cloud Services項目,在一個服務上有多個網站,在ServiceDefinition.csdef如下配置:

<WebRole name="PE.Roles.API" vmsize="Small">
    <Sites>
      <Site name="API" physicalDirectory="..\..\..\PE.Roles.API">
        <Bindings>
          <Binding name="http" endpointName="PE.API" />
        </Bindings>
      </Site>
      <Site name="PE.Services.Authorization" physicalDirectory="..\..\..\PE.Services.Authorization">
        <Bindings>
          <Binding name="http" endpointName="PE.Services.Authorization" />
        </Bindings>
      </Site>
    <!-- Etc -->
    </Sites>
</WebRole>

這可以在Visual Studio 2015中正確編譯和打包,並且可以毫無問題地從預編譯的.cspkg文件部署到Cloud Service。

我們最近已移至Visual Studio Team Services for DevOps,並且我正在嘗試使用提供的Azure Cloud Services構建模板來設置此解決方案以在雲中構建和部署。

.sln步驟正確完成,但是.ccproj步驟失敗,並出現以下錯誤:

PE.Azure\bin\ServiceDefinition.csdef (0, 0)
PE.Azure\bin\ServiceDefinition.csdef(0,0): Error CloudServices079: Cannot find the physical directory 'D:\a\1\PE.Roles.API' for virtual path API/.
Process 'msbuild.exe' exited with code '1'.

我的構建參數是: /t:Publish /p:TargetProfile=$(targetProfile) /p:DebugType=None /p:SkipInvalidConfigurations=true /p:OutputPath=bin\\ /p:PublishDir="$(build.artifactstagingdirectory)\\\\"

我發現許多博客文章和SO問題都涉及類似的問題,但沒有一個能夠准確解決這個問題(並且最近幾年也沒有發布)。

更新資料

我為該項目創建了TFVC存儲庫,並實現了映射步驟,如下所示:

在此處輸入圖片說明

...但是我仍然遇到相同的錯誤: 在此處輸入圖片說明

我需要做什么才能使它正常工作?

您需要根據physicalDirectory的設置修改源映射。

請參考此示例對其進行修改:

<Site name="API" physicalDirectory="..\..\..\WebGeneralDemo">
        <Bindings>
          <Binding name="http" endpointName="WebGeneralDemo" />
        </Bindings>
      </Site>

在此處輸入圖片說明

更新:

如果這些項目在git存儲庫中,則可以將結構保留在存儲庫中,如下所示:

-回購

-AzureCloudServiceDemo

--- AzureCloudServiceDemo

--- WebRole1

--WebGeneralDemo

如果結構不是這樣,則可以使用“ 復制文件”任務復制文件夾(包括文件)

更新資料

對於此特定問題,回購協議的原始結構如下:

在此處輸入圖片說明

.... .ccproj文件位於PE.Azure文件夾中,而正在發布的站點位於PE.Roles.API文件夾中。

編譯器正在$(build.sourcesDirectory) (因此D:\\a\\1\\上方的目錄中尋找站點內容,因此糾正該錯誤的正確“復制文件”任務為: 在此處輸入圖片說明

每個站點都需要一個“復制文件”任務,並且必須將這些任務放置在“構建解決方案” .sln步驟之后,但在“構建解決方案” .ccproj步驟之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM