5

Slow Cheetahを使用して、ローカルデータベース接続文字列とSQLAzure接続文字列を切り替えようとしています。これは、TeamCityを使用してAzureにプッシュしているAzureワーカーの役割です。ログファイルを調べると、Slow Cheetahプロセスは正しく実行されており、変換されたapp.configが生成されていますが、将来のビルドステップ(制御できないと思います)では、変換されたファイルを元のapp.configで上書きしています。 。

他の誰かがこのメソッドで成功したことがありますか、または接続文字列を切り替えるための別のメソッドを教えていただけますか。1つの接続文字列を使用し、hostsファイルを編集して、必要なデータベースを指すように指示されましたが、それは面倒なようです。

4

2 に答える 2

5

Azureの運用環境とテスト/ローカル環境を扱う場合、ベストプラクティスは、そのような構成情報をweb.configではなくサービス構成ファイルに保存することです。必要な数のサービス構成ファイルを作成し、ソリューションを公開するときにGUIまたはcspackによって目的の.cscfgファイルを選択できます。既定では、VisualStudioのAzureテンプレートは2つの.cscfgファイルを提供します。

  • ServiceConfiguration.Cloud.cscfg
  • ServiceConfiguration.Local.cscfg

これらの既存のファイルを使用して、2つの異なる接続文字列エントリを追加するか、独自のエントリを作成できます。以下に示すように、接続文字列の値を.cscfgファイルに保存できます。

<ConfigurationSettings>
  <Setting name="DbConnectionString" value="blah" />
</ConfigurationSettings>

次に、以下に示すように、コード内の構成設定エントリの値を取得できます。

RoleEnvironment.GetConfigurationSettingValue("DbConnectionString")

以下のこのシナリオに関連するMSDNトピック:

于 2012-03-18T01:46:59.617 に答える
4

接続文字列をサービス構成に配置する必要があるというMonochromeに同意しますが、Azureにデプロイする場合にのみ適用する必要がある、接続文字列に関係のない構成変更が必要な場合があります。たとえば、私自身のプロジェクトでは、Azureにデプロイするときに変更するlog4net構成が必要でした。

SlowCheetahをワーカーロールプロジェクトとWindowsAzureで機能させる方法を説明するこの記事を見つけました。変換された構成ファイルをコピーするには、Azureプロジェクトファイルに小さな変更を加える必要があります。

<Target Name="CopyWorkerRoleConfigurations" BeforeTargets="AfterPackageComputeService">
    <Copy SourceFiles="..\WorkerRoleName\bin\$(Configuration)\WorkerRoleName.dll.config" DestinationFolder="$(IntermediateOutputPath)WorkerRoleName" OverwriteReadOnlyFiles="true" />
    </Target>
</Project>

ディレクトリ構造に合わせてSourceFiles属性を微調整する必要がある場合があります。しかし、それだけです。

于 2012-10-12T09:51:18.163 に答える