【问题标题】:C# dotnet web application: Dll's xml config file is lost when PublishingC# dotnet Web 应用程序:Dll 的 xml 配置文件在发布时丢失
【发布时间】:2012-06-15 20:11:06
【问题描述】:

我有点迷路了!

我有一个 dll,它使用 xml 配置文件获取一些数据库连接信息。 dll在它自己的目录中查找xml配置文件,我根本无法更改dll。

每次构建项目时,我都必须手动将配置文件复制到 Temporary ASP.NET Files 文件夹中的某个文件夹中。 (我不明白这一点,但我可以接受这个手动更改)

问题是当我发布项目时,我无法弄清楚将配置文件复制到哪里?

有人可以指出我正确的方向吗?或者也许告诉我一种可以将 xml 配置文件“绑定”到 bin 文件夹的方法???

沃宁

【问题讨论】:

  • 所以这个 xml 文件不是标准的 .NET app.config?因为如果是这样,您可能只需将预期的配置复制到您的Web.config 文件中(请参阅我的答案)。
  • 您好 Kit。感谢您的回答。不,我不认为这是标准的 .net app.config 文件。它以 dll 命名,但扩展名为 .config。所以:nameofdll.config,它包含很像 web.config 文件的 xml,但在一个名为“userSettings”的节点中,如果我将它放在 web.config 文件“无法识别的配置部分 userSettings”中,则会引发此错误
  • 我有最后一个想法,您的 ASP.NET 项目需要使用(显然已过时)ConfigurationSettings 引用。检查我更新的答案。 (看到这个answer

标签: c# iis dll .net-4.0


【解决方案1】:

.NET 配置文件可能难以管理。它在 web 应用程序中的工作方式是 Web.config 将取代任何依赖项的 app.config 文件(当你说“DLL”时,我假设你正在谈论它。)

基本上,在 .NET 中,所有配置信息都是从主应用程序项目中提取的。

见:

App.config seems to be ignored

Configuration from App.config isn't being pulled correctly

最后:

Does a web.config substitute app.config?

可能会帮助你弄清楚你需要知道什么。

更新:对您的问题进行进一步搜索,您正在合并到 .Net 解决方案中的代码可能正在使用“过时”ConfigurationSettings,这将需要您添加在您的引用文件夹中引用 System.Configuration(右键单击项目 ->“添加引用”并转到 .NET 选项卡并选择 System.Configuration)。

【讨论】:

  • 嗨套件。将信息放入 web.config 不起作用。我已经尝试通过几种方式添加它。我相信 dll 将始终在它自己的目录中查找它的配置文件。所以我认为完成这项工作的唯一方法是弄清楚发布后我需要将配置文件放在哪里。
  • @Vauneen 有趣!也许您可以通过使用Process Monitor 检查并查看它正在寻找的位置,并查看您的进程试图打开的路径是什么?也许这是事后的事,因为您似乎已经看到了它的位置......
  • 尝试使用 System.Configuration,但没有成功。我认为回到正轨的最快方法是让构建 dll 的人宁愿给我一个没有配置文件的人。所以在没有解决这个问题的情况下,我又回到了正轨。感谢您的所有帮助!
【解决方案2】:

在配置的属性中将“复制到输出目录”设置为“始终复制”。然后 Visual Studio 将在每次构建后自动复制配置文件,并且它也会正确发布。

【讨论】:

  • 嗨,Jakub,感谢您的回复。这样做会将 xml 配置文件发布到“C:\inetpub\wwwroot\BETA\bin”,但查看构建版本时收到的错误消息(我根本无法让发布的版本正常工作)显示页面正在查看对于此处的配置文件:'C:\Users\vauneen\AppData\Local\Temp\Temporary ASP.NET Files\root\2a97c644\3fd65c8a\assembly\dl3\5935cc01\0052d185_23eccc01' 你知道为什么它不寻找inetpub 中的配置?
  • 路径似乎是 AppDomain.CurrentDomain.DynamicDirectory。请问,你能查一下吗?请问,图书馆的名称是什么(如果它是公开的)?
  • 嗨,Jakub,我已经放弃理解这个了。我让编写 dll 的人给我一个不需要配置文件的版本,现在一切都在使用那个新的 dll。非常感谢您的帮助!
猜你喜欢
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多