【问题标题】:web.config not app.config being published to xxx.dll.config in Visual Studio 2015web.config 不是 app.config 在 Visual Studio 2015 中发布到 xxx.dll.config
【发布时间】:2016-09-05 21:52:31
【问题描述】:

我有一个 ASP.NET 项目,它将类库输出为 dll,然后将其部署到 IIS。每个标准构建的配置文件也与 dll 一起作为 xxx.dll.config 输出,它包含许多有用的环境变量,例如连接字符串(即它符合应用程序设置架构要求)。

在 VS 2012 中,xxx.dll.config 文件的内容来源于项目根目录下的 app.config。

在 VS 2015 中,似乎 xxx.dll.config 的内容来自项目根目录中的 web.config。

重现步骤:

  1. 使用 VS2015 创建 ASP.NET 应用程序。
  2. 在此应用程序中添加 app.config 文件。
  3. 构建此应用程序。
  4. 打开bin文件夹,找到application.dll.config文件并打开。内容与Web.config相同。
  5. 在 Visual Studio 2012 中执行步骤 1 到步骤 4 的相同操作,内容与 App.config 相同。

这让我有点头疼,因为我依赖 app.config 保存功能测试的变量(连接字符串、身份验证提供程序),而 web.config 保存已部署代码的变量。

我在 AppDomains 及其配置变量上所做的大部分阅读似乎表明 web.config 不应该考虑到构建输出中,除非明确指示,即使这样,转换 web.config 也不是很容易文件,没关系让它最终成为 xxx.dll.config 文件。

我可以重新设计我的测试装置以直接从测试中设置环境变量,但是对于像 ASP.Identity 这样需要编写相当多的新类来加载我想避免的 RoleManager 和相关提供程序的东西。

如果有人可以建议如何设计 VS 构建以输出一个易于被程序集使用的配置文件,并且当通过 nunit runner 或 Resharper 运行时,nunit 测试会很棒。

【问题讨论】:

  • 相反,您可以在源代码管理中添加一个新文件 *.dll.config 并在该文件中复制所需的条目。这应该可以解决问题。

标签: c# asp.net visual-studio nunit


【解决方案1】:

为了将 Visual Studio 2015 的原始行为恢复到我在 Visual Studio 2012 中的习惯,我添加了一个构建后事件:

  1. 转到项目-> 属性
  2. 选择构建事件
  3. 将以下内容添加到“构建后事件命令行”:

    复制 /Y "$(ProjectDir)\App.config" "$(TargetDir)\$(TargetName).dll.config"

.dll.config 现在再次成为 App.config 而不是 Web.config

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多