정적 콘텐츠 호스팅

Azure DevOps Services

HTML, CSS 및 JavaScript 파일과 같은 확장에 대한 정적 콘텐츠를 사용자 고유의 서비스, 타사 호스팅 서비스(예: Azure 또는 Heroku) 또는 Azure DevOps Services에서 직접 호스트하도록 선택합니다.

중요합니다

확장이 TFS 데이터베이스에 사용자 지정 테이블을 만들어야 하는 경우 'dbo' 스키마를 사용하여 만들지 마세요. 대신 사용자 지정 테이블을 별도의 스키마로 만들어야 합니다. 예를 들어 'YourExtensionName'입니다.

팁 (조언)

VSS.SDK에서 테마 지정 및 마이그레이션이 포함된 최신 확장 개발 지침은 Azure DevOps 확장 SDK 개발자 포털을 참조하세요.

Azure DevOps Services에서 호스팅

이 모델에서 정적 콘텐츠는 확장의 .vsix 파일로 패키지되고 공용 엔드포인트에서 https://publisher.gallerycdn.vsassets.io제공됩니다.

확장의 정적 콘텐츠는 Azure DevOps Services에서 데이터를 향상하거나 데코레이팅할 때 유용합니다. 확장 펍은 사용자(확장 게시자)가 확장에 대한 호스팅 서비스를 설정, 관리 또는 지불할 필요가 없습니다.

Steps

  1. 확장 매니페스트 파일에서 files 속성을 통해 포함할 파일을 지정합니다.
    {
      "files": [
        {
            "path": "scripts", "addressable": true
        },
        {
            "path": "images/extra/icon1.png", "addressable": true
        }
      ]
    }
    
  2. 확장 매니페스트에서 baseUri 속성(설정된 경우)을 제거합니다.
  3. 확장을 패키지로 묶기(단계)
  4. 확장 게시(또는 다시 게시) (단계)
> [! 중요] > .vsix에 포함된 정적 콘텐츠 파일을 변경할 때 확장의 버전을 증가해야 합니다.

다음 사항에 유의하세요.

  • 특성에 지정된 path 값은 폴더 또는 개별 파일일 수 있습니다. 폴더인 경우 전체 폴더(및 하위 폴더)가 포함됩니다.
  • 이 특성은 addressable 중요하며 Visual Studio Codespaces에 파일 URL 주소를 지정하도록 지시합니다.
  • 모든 addressable 자산 요청은 대/소문자를 구분합니다. 자산에 대한 요청이 실제 업로드된 자산과 다른 경우 HTTP 404(찾을 수 없음) 오류가 발생합니다.
  • baseUri를 지정하지 않거나 빈 값을 설정하면, Visual Studio Codespaces가 런타임 시 귀하의 정적 콘텐츠가 Azure DevOps Services에서 호스팅되는 것처럼 기본 URI를 자동으로 계산합니다.

타사 서비스의 호스트

이 모델에서 정적 콘텐츠는 사용자 고유의 서비스에서 제공되며 확장의 .vsix 파일에 포함되지 않습니다.

Steps

  1. 확장 매니페스트에서 baseUri 속성을 설정합니다. 예를 들어, https://myservice.net/extension 값을 가정하여 이 허브 기여를 사용하는 경우입니다.
    "baseUri": "https://myservice.net/extension",
    "contributions": [
        {
             "id": "Fabrikam.HelloWorld",
             "type": "ms.vss-web.hub",
             "targets": [
                 "ms.vss-work-web.work-hub-group"
             ],
             "properties": {
                 "name": "Hello",
                 "uri": "hello-world.html"
             }
         }
    ]

Azure DevOps Services는 https://myservice.net/extension/hello-world.html에서 이 허브가 렌더링될 때 콘텐츠를 로드합니다.

다음 단계