3

したがって、私はかなり新しい MVC4 であり、多くのパターンは私にとって初めてです。

ただし、私が興味を持っているのは、リリース/デバッグ モードに関するベスト プラクティスです。ライブ モードとデバッグ モードで異なる点がたくさんあります。公開するために何も変更する必要がないように、すべてを自動化したいと考えています。

たとえば、レポ (ドメイン プロジェクト) で次のようにしました。

    public EFAccountRepository()
    {
#if DEBUG
        _context = new EFDbContext("name=Debug");
#else
        _context = new EFDbContext("name=Live");
#endif
    }

そして、私のDI(webui)でこのように

#if DEBUG
        EFDbContext efcontext = new EFDbContext("name=Debug");
#else
        EFDbContext efcontext = new EFDbContext("name=Live");
#endif

それとも、単に持っている方が賢明でしょうか

EFDbContext efcontext = new EFDbContext("name=MyApp");

そして、web.config トランスフォームで MyApp の意味を変更しますか?

debug/release-publish を自動化するためのその他のヒントは大歓迎です。

4

3 に答える 3

6

接続文字列をコードにハードコーディングしないことを強くお勧めします。コードを web.config 変換に向けることを検討してください。そこに接続文字列を追加すると、コードのバージョンに応じて適切な変換を適用できるため、アプリで次のコードを 1 回使用するだけで、すべての環境をカバーできます。

ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString

デバッグバージョンの内部には、次のようなものがあります

<configuration xmlns:xdt="...">
    <connectionStrings>
      <add name="MyConnectionString" connectionString="debugstring"
         providerName="debugprovider" />
     </connectionStrings>
</configuration>

リリース バージョン内で、古い文字列を置き換えるように変換に指示できます。

<configuration xmlns:xdt="...">
    <connectionStrings>
      <add name="MyConnectionString" connectionString="newstring"
         providerName="newprovider"
         xdt:Transform="Replace" />
     </connectionStrings>
</configuration>

詳細については、http://msdn.microsoft.com/en-us/library/dd465326.aspx を ご覧ください。

于 2013-03-29T17:59:12.523 に答える
4

複数の接続文字列がある場合、選択した回答は機能しません。リリース構成で、すべての接続文字列のタグの下に追加します

xdt:Transform="SetAttributes" xdt:Locator="Match(name)"

これは、私の Web 構成ファイルにあるものです

Web.Debug.Config で

<add name="MyConnectionString" 
    connectionString="Data Source=dev;Initial Catalog=DevDB;Integrated Security=True;
    providerName="System.Data.SqlClient"/>

および Web.Release.Config で

<add name="MyConnectionString" 
    connectionString="Data Source=LIVESERVER;Initial Catalog=DB98;Integrated Security=True;
    providerName="System.Data.SqlClient" 
    xdt:Transform="SetAttributes" 
    xdt:Locator="Match(name)"/>
于 2014-08-19T17:56:04.523 に答える
1

web.config 変換を使用するhttp://msdn.microsoft.com/en-us/library/dd465326.aspx

于 2013-03-29T17:14:40.767 に答える