20

2 つの個別のホステッド サービスに展開されている Windows Azure サイトがあります。1 つはテスト用、もう 1 つは本番用です。本番環境にプッシュする準備ができたら、本番サービスでステージング デプロイをスピンアップし、そこにプッシュしてから、VIP スワップを行います。すべて良い。

問題は、XS Web インスタンスから移行したいのですが、テスト展開に余分なお金を費やすのは本当に意味がないということです。テスト用に XS インスタンスを使用してから、本番用にミディアム インスタンスを使用する方法はありますか? 各サービス構成のインスタンス数を変更できることはわかっていますが、すべての構成のインスタンス サイズしか変更できません。

構成に XS を残して、本番環境にデプロイする前に Medium に切り替えることを忘れないようにしようと考えています。これをしてはいけない理由はありますか?より良い方法はありますか?

乾杯!

4

5 に答える 5

23

これを行うにはいくつかの方法があります...より簡単な方法は、CCPROJ ファイルを少し「ハッキング」することです。

1) 構成名 (リリース/デバッグ/QA/UAT/など) に一致するすべての環境の CSDEF ファイルのクローンを作成します: ServiceDefinition.Release.csdef、ServiceDefinition.Debug.csdef など。

2) メモ帳エディタを使用して、これらのファイルを手動で CCPROJ ファイルに追加します。

3) ServiceDefinition.$(ConfigurationName).csdef を ServiceDefintion.csdef にコピーするビルド前イベント コマンドを定義します。

ほら、これで ServiceDefintion は、使用している構成に適応します。

より洗練されたものにしたい、または詳細を確認したい場合は、このブログ エントリをチェックしてください。これは、あらゆる種類の設定を一斉に切り替えるのに役立ちます。

http://www.paraleap.com/blog/post/Managing-environments-in-a-distributed-Azure-or-other-cloud-based-NET-solution.aspx

編集:これは機能する構成です。複数の定義エラーを回避するために、ServiceDefinition の代わりに「None」タイプとして他のファイルが含まれていることに注意してください。

  <ItemGroup>
    <ServiceConfiguration Include="ServiceConfiguration.Local.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Development 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Development 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Local Dev 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Local Dev 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.QA 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.QA 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Pre-Production 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Production.cscfg" />
    <ServiceDefinition Include="ServiceDefinition.csdef" />
    <None Include="ServiceDefinition.Local.csdef" />
    <None Include="ServiceDefinition.Development 1.csdef" />
    <None Include="ServiceDefinition.Development 2.csdef" />
    <None Include="ServiceDefinition.Local Dev 1.csdef" />
    <None Include="ServiceDefinition.Local Dev 2.csdef" />
    <None Include="ServiceDefinition.QA 1.csdef" />
    <None Include="ServiceDefinition.QA 2.csdef" />
    <None Include="ServiceDefinition.Pre-Production 1.csdef" />
    <None Include="ServiceDefinition.Production.csdef" />
  </ItemGroup>
于 2012-06-23T16:23:33.070 に答える
15

Web パブリッシングTransformXmlMSBuild タスクを使用して、必要な ServiceDefinition の部分のみを変換できます (Web.Config で今できるように)。

  • ServiceDefinition.[BuildConfigName].csdefServiceDefinition.csdef ファイルの隣にファイルを作成します (おそらくファイル エクスプローラーでこれを行う必要があります)。
  • Web.config 変換を作成したのと同じように、変換ファイルを作成します。念のため、ルート名前空間を明示的に設定したので、ルート要素は次のようになります。
  <ServiceDefinition name="Cloud.JobsWorker" 
          xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" 
          xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
          schemaVersion="2013-10.2.2">
  • 次を使用して手動で ccproj に追加します。
  <ServiceDefinition Include="ServiceDefinition.csdef" />
  <None Include="ServiceDefinition.Release.csdef" />
  • プロジェクトの下部に以下を含めます。
  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <PropertyGroup>
    <ServiceDefinitionTransform>ServiceDefinition.$(Configuration).csdef</ServiceDefinitionTransform>
  </PropertyGroup>
  <Target Name="TransformServiceDefinition" BeforeTargets="ResolveServiceDefinition" Condition="exists('$(ServiceDefinitionTransform)')">
    <!-- Generate transformed service config in the intermediate directory -->
    <TransformXml Source="@(ServiceDefinition)" Destination="$(IntermediateOutputPath)%(Filename)%(Extension)" Transform="$(ServiceDefinitionTransform)" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <ServiceDefinition Remove="ServiceDefinition.csdef" />
      <ServiceDefinition Include="$(IntermediateOutputPath)ServiceDefinition.csdef" />
    </ItemGroup>
  </Target>

クラウド アプリをパッケージ化または公開するときは、使用しているビルド構成に応じて csdef を変換する必要があります。

これはここから適応されます: http://blogs.staykov.net/2011/06/windows-azure-configuration-settings.html

于 2014-04-03T16:56:07.490 に答える
1

VM のサイズは ServiceDefinition.csdef ファイルで処理されます。これは、実行時または展開時に編集できないものです。.csdef の設定を変更し、ソリューションを再パッケージ化してから再デプロイする必要があります。

解決策の 1 つは、複数の Windows Azure 展開プロジェクトをセットアップすることです。1 つのプロジェクトは、XS を使用するように構成された .csdef を持つ「テスト」プロジェクトです。別のプロジェクトは、より大きなインスタンスを使用する「本番」プロジェクトです。これにより、標準の Windows Azure / Visual Studio ツールを使用してプロジェクトを管理できるようになります。これは、プロセスによっては便利な場合があります。

于 2012-06-23T15:47:55.667 に答える