【问题标题】:Referenced project app.config transform with SlowCheetah使用 SlowCheetah 的引用项目 app.config 转换
【发布时间】:2013-05-29 20:26:42
【问题描述】:

我有一个 ASP.NET MVC 4 Web 项目

网页界面

引用 ASP.NET 4 代码库

DAL

代码库引用了SlowCheetah 2.5.5 NuGet 包,并针对App.Config 设置了多个转换。

WebUI 使用普通的Web.Config 转换,但我还添加了对SlowCheetah 的引用作为对我的问题的测试,但这并没有改变我的问题。

当我使用

发布时

MS 网络部署

在 Visual Studio 2012 中或当我直接发布到

文件系统

使用QA 配置将正确的Web.QA.config 放在我网站的根目录中,但是引用的类库配置不起作用,我在主页上收到一个sql 连接错误,提醒我正确的@ 987654328@ 转换很可能未用于引用的DAL 项目。

我认为这将是 bin 文件夹中 WebUI.dll.config 文件,但我不太确定,因为我在另一个 Web 服务器上工作,我手动更改了默认 App.ConfigWeb.Config 文件,并且网站的根 bin 目录中没有 .dll.config 文件。

有人知道如何让它工作吗?

更新:

以下示例:

DAL代码库项目App.Config

<configuration>
    <configSections>
 </configSections>
    <connectionStrings>
  <add name="DAL.Properties.Settings.DefaultConnection" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True;" />
 </connectionStrings>
</configuration>

来自我的WebUI 项目的Web.Config 的一部分

  <connectionStrings>
    <add name="WebUI.Properties.Settings.DefaultConnection" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True;" />
  </connectionStrings>

我为每个项目使用一个 Settings.settings 文件。

如何将 App.Config 连接合并到我的 Web.Config 中,以便在发布期间对其进行转换?最好我希望它在发布到网络时只使用一个连接。

目前,如果我正确设置了app.configDAL 引用的项目可以在 Web 应用程序上运行(这对我来说才有意义,因为它是一个引用的 .dll)。

将此DAL.Properties.Settings.DefaultConnection 连接添加到我的web.config 是否会替换DAL 正在使用的连接?

【问题讨论】:

    标签: asp.net web-deployment web-config-transform slowcheetah


    【解决方案1】:

    您对 Web 应用程序的所有设置都将来自 web.config 文件 - app.config 不会与 Web 应用程序一起使用或部署。最有可能的是,该配置存在,因为您使用的是实体框架,而这正是 EDMX 功能存储它的连接字符串的地方。如果您将连接字符串放在 web.config 中(并使用适当的配置转换),您应该会很好。

    【讨论】:

    • 我在我的 DAL 项目中使用 Dapper。我的 App.Config 中的数据库连接在此 DAL 项目中使用,作为存储库的一部分……它仅在 WebUI 未向我的存储库提供现有连接以发出数据库请求时使用。连接都有不同的名称,如果不需要这个 app.config 那么发布不应该工作吗?我知道当我手动将默认 Web.Config 和 App.Config 设置为所需的连接时它可以工作,但我希望发布选择正确的配置文件。
    • 补充一点,DAL 不知道 WebUI,也无法访问配置中的相关连接字符串。
    • 通常,每个应用程序边界都有一个 .config。如果它是一个 .exe,那么您就有一个 app.config。如果它是一个 Web 应用程序,那么您就有一个 web.config。只有一个。当您在代码中启动 ConfigurationManager 时,它将使用与应用程序关联的 .config,而不是某些组件。
    • 另一种说法——与你的 DAL 关联的 app.config 在运行时毫无意义——除非你编写一些非常奇怪的非标准代码,否则它不会以任何方式使用所以。 Web 应用程序的所有配置设置都应该在 web.config 中。
    • 我是说您的 DAL 使用的设置将在 web.config 中。不需要参考。查看答案here
    猜你喜欢
    • 2012-02-20
    • 2013-03-20
    • 1970-01-01
    • 2014-01-06
    • 2014-11-09
    • 2018-06-19
    • 2012-12-28
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多