none
有關 3-layer 改寫app.config部分 RRS feed

  • 問題

  • 各位前輩大大、小弟在資料存取層專案中,有個需求是app.config 要修改裡面相關內容

    想修改DataAccessLayer的config內容,但是我我在程式中相關內容怎麼抓都是抓到

    PresentationLayer\bin\Debug\DataAccessLayer.dll.config的路徑(但是這個底下、只有輸出

    BusinessLayer.dll),請前輩大大給個方向

    因為目前專案的架構,參考相依如下

    是PresentationLayer>>>BusinessLayer>>>DataAccessLayer這樣



    2013年6月10日 上午 04:07

解答

所有回覆

  • 确保你的app.config是在程序根目录,同时你引用的(封装好的)dll档案是被整个项目引用了,并且直接:

    ConfigurationManager.AppSettings……;读取。


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月10日 上午 04:57
  • DataAccessLayer加入到BusinessLayer的專案參考,BusinessLayer又加入到PresentationLayer的參考,起始專案一定是PresentationLayer,而開發過程所以使用debug模式,因此路徑就是PresentationLayer\bin\Debug\DataAccessLayer.dll.config
    2013年6月10日 上午 06:46
  • Mark Shu 前輩  那有辦法用屬性的方式、將專案Config輸出到展示層嗎?

    因為編譯的時候、加入參考、只會出現dll部分

    2013年6月10日 上午 07:03
  • 您可將原來寫在DataAccessLayer中config的設定如appSetting...等,複製到PresentationLayer 的config中,建置後他會去讀取PresentationLayer 的config中的設定
    2013年6月10日 上午 07:11
  • 前輩 我目前是用這樣方式來取值、但是我想取的是connection的值

    var uri = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase));
    var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = Path.Combine(uri.LocalPath, Assembly.GetExecutingAssembly().FullName.Split(',')[0] + ".dll.config") };
          var assemblyConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);
          if (assemblyConfig.HasFile)
          {
            string val = assemblyConfig.AppSettings.Settings["Key"].Value;

            // 希望取<connectionStrings> </connectionStrings> 裡面的add name  底的connection的值

          }

    2013年6月10日 上午 10:57
  • string val = assemblyConfig.ConnectionStrings["key"].ConnectionString;

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月10日 上午 11:05
  • 這部分我有Try過  它會顯示

    錯誤 22 'System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]' 的保護層級導致無法對其進行存取 

    2013年6月10日 上午 11:07
  • 你不是只要获取么?

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月10日 上午 11:10
  • string val = assemblyConfig.ConnectionStrings["key"].ConnectionString;

    若是改寫這樣的話、它會跳出上方的錯誤

    2013年6月10日 上午 11:13
  •  var assemblyConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMapConfigurationUserLevel.None);
    string s= assemblyConfig.ConnectionStrings.ConnectionStrings["xxx"].ConnectionString;

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月10日 上午 11:42
  • 太感謝前輩大大熱心指導~~^^

    2013年6月11日 上午 03:46