0

我在当前项目中遇到了一些麻烦。我有一个包含 2 个独立项目的解决方案。第一个是我正在发布的项目,它有一个 web.config 文件。第二个是数据访问项目,它只包含.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 文件以在发布后对其进行编辑。

我试图将 app.config 文件设置为一个链接文件,它只指向另一个项目中的 Web.config 文件,但问题是设置文件没有使用 app.config 中的正确值进行更新文件,除非您在 Visual Studio 中打开设置文件并允许它重新加载。设置文件中的值是在整个应用程序中使用的值。

现在唯一的解决方法是更改​​配置并重新发布项目。

4

1 回答 1

0

万一其他人遇到这个问题,这是我能够使用的解决方法:

在 中创建一个 xml 文件PublishProject,并将 中的数据转换app.config为单独的 xml 标记,如下所示:

<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 回答