13

好的,这很简单,但据我所知……您只能使用某种 Windows 工作流将另一个配置包含到另一个配置中(我拒绝这样做)。

这是交易:

MAINAPP.EXE 引用一个假设的 LIBRARY.DLL。

MAINAPP.EXE 有自己的 MAINAPP.EXE.config。

如果将“配置值”添加到 LIBRARY.DLL(从而在 LIBRARY.DLL 项目中创建 app.config),即使将 app.config 复制到 LIBRARY.DLL.config 到正确的路径后,这些值在运行时也不可用-构建

上述原因是即使引用的库也会从“mainapp.exe”配置中读取。

到现在为止还挺好”。现在,当您添加 WCF 服务引用时,Visual Studio 会使用绑定/端点/等创建或填充您的 app.config;但这已添加到您添加参考配置的项目中;因此,您的 Library.DLL.prj 最终会得到一个不错的 app.config,它无法正常工作,因为它永远不会被读取,甚至不会被复制到输出目录。现在您可能认为您可以右键单击该 app.config 并将“始终复制”设置为 true。忘了它。那没有任何作用。(你可以用谷歌搜索那个)。

那么,考虑到上述奇怪的场景,一个使用 .NET 3.5 项目的普通 VS2008 开发人员如何管理他添加到业务层 dll 中的 WCF 服务引用?每次服务发生变化或每次添加/删除服务时,该开发人员是否应该将其 DLL 中无用的 app.config 中的所有部分复制并粘贴到 Mainapp.exe.config 文件中?

4

3 回答 3

8

是的。复制粘贴就是答案。这不是一个很好的答案,但它就是答案,而且从 .NET 1.0 的第一天开始,它就已经有了 AppSettings。

于 2009-03-11T13:13:05.373 回答
3

您可以让一个库项目包含自定义配置文件,并且这些文件可以复制到另一个应用程序的可执行位置(这有点棘手,但没什么大不了的)。您只需使用 OpenMappedExeConfiguration 即可获取这些文件中的任何信息。然后,当您实例化 WCF 代理(实例化一个 Binding 并将其传递给代理)时,您必须进行一些自定义编码。我在这里聚会迟到了,但如果你有兴趣,我可以提供更多细节。

于 2009-05-26T05:42:39.593 回答
0

不,你是对的。

可以肯定的是,您的 WCF 服务不在业务层项目中,而是在一个单独的项目中,该项目充当业务层的外观。然后,您的业务层只是另一个程序集,它应该是并且不关心它是如何访问的,WCF 项目为它做这件事。

或者当然,您编写自定义服务主机并将最少量的信息放入配置文件(主机名、证书指纹),然后在代码中完成其余的工作。

于 2009-03-11T13:12:41.973 回答