0

現在のプロジェクトで問題が発生しています。2 つの個別のプロジェクトを含むソリューションがあります。1 つ目は、公開しているプロジェクトで、web.config ファイルがあります。2 つ目はデータ アクセス プロジェクトで、.cs ファイルのみが含まれ、app.config ファイルと、Settings.settings ファイルを含む Properties フォルダーがあります。

そのようです:

Solution
    DataProject
        app.config
        Settings.settings
        Code.cs

    PublishProject
        Code Files
        Web.config

私の問題は、ソリューションが公開された後に app.config ファイルの設定を編集できるようにしたいのですが、app.config ファイルが PublishProject の bin フォルダーにある DataProject.dll に取り込まれてしまうことです。このため、公開後に app.config ファイルにアクセスして編集することはできません。

別のプロジェクトの Web.config ファイルを指すだけのリンク ファイルとして app.config ファイルをセットアップしようとしましたが、設定ファイルが app.config からの正しい値で更新されないという問題がありました。 Visual Studio で設定ファイルを開き、再読み込みを許可しない限り、ファイルは削除されません。設定ファイルの値は、アプリケーション全体で使用されているものです。

現時点で唯一の回避策は、構成を変更してプロジェクトを再発行することです。

4

1 に答える 1

0

他の誰かがこの問題に遭遇した場合に備えて、私が使用できた回避策を次に示します。

で xml ファイルを作成し、のデータを次のように個々の xml タグにPublishProject変換します。app.config

<configuration>    
    <setting name="debug" serializeAs="String">
              <value>False</value>
    </setting>
</configuration>

になる

<Properties>
    <debug>True</debug>
</Properties>

これを行うと、Settings.settings ファイルの値を使用する代わりに、コードで次を呼び出すことができます。

XmlDocument doc = new XmlDocument();
String appPath = HttpContext.Current.Server.MapPath("~").ToString() + @"/App_Data/Properties.xml";
doc.Load(appPath);
debug = Convert.ToBoolean(doc.SelectSingleNode("Properties/debug").InnerText.ToString());

注: 完成したプロジェクトの App_Data フォルダーに配置したのは、そのフォルダーは既定ではブラウザーからアクセスできないためです。

于 2013-07-15T14:55:36.193 に答える