向项目添加WCF服务

4
我有一个C# WinForms项目,其中包含我通过添加标准类(而非使用“添加项”>“WCF服务”)在项目中创建的一些WCF服务定义文件。
该项目包含一些依赖项,需要我为x86处理器构建该项目。
如果我使用WCF服务配置编辑器编辑app.config文件并尝试使用“创建新服务...”向导,然后浏览到项目EXE文件(在debug文件夹中),我会得到一个错误(我已经读到这是因为我正在针对x86处理器进行目标设置):
“无法加载文件或程序集“EXE_FILE_NAME”或其一个依赖项。尝试加载格式不正确的程序。”
因此,在将目标更改为所有CPU、重新编译项目,然后再次尝试在WCF服务配置编辑器中创建服务之后,我现在收到另一条错误消息:
“无法加载文件或程序集'SOLUTION_NAME,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'或其一个依赖项。系统找不到指定的文件。”
(澄清一下,当我将所有CPU作为目标时仍然可以编译该项目,但由于依赖关系,在运行时会出现错误)
是否有人能帮我解决这个问题,以便我可以使用WCF服务配置编辑器中的向导添加在app.config文件中定义的服务? (我认为,如果我在针对所有CPU的情况下将服务添加到WCF服务配置编辑器中,然后可以进行任何修改,无论目标设置如何)

听起来你正在尝试与 WCF 服务交互,但没有使用“添加服务引用”对话框。是这样吗?如果是这样,为什么不使用内置工具呢? - IAmTimCorey
是的,我没有使用“添加服务引用”。我在WinForms项目中定义了服务,但是我从另一个项目中复制了代码(我不想将它们链接起来)。但是当我尝试使用“WCF服务配置编辑器”(右键单击app.config文件时出现在上下文菜单中)配置WCF服务时,服务不可用于配置。因此,我正在尝试使用WCF编辑器中的向导添加它们。我不是在尝试引用另一个项目中的服务。 - chris.au
所以,如果我理解你的意思正确的话,你是将WCF服务项目(实际代码、项目文件等)添加到你的新解决方案中。虽然这可能并不严格相关,但你为什么要这样做呢?WCF服务(以及面向对象编程)的目的是设计一次,部署供所有人使用。看起来你在为自己制造麻烦,去做一些对我来说没有意义的事情。如果你有一个好的理由(我相信可能会有),不必费心向我证明,只需告诉我“是的,我们考虑过了”,就足够了。 - IAmTimCorey
是的,正确的,将服务代码添加到新项目中...目前正在开发阶段,我需要在最终服务框架上工作时进行一些更深入的集成。是的,我们考虑过。 - chris.au
你尝试过从其他项目中复制Reference.cs文件吗?比如,创建一个控制台应用程序,添加服务引用,然后将其中的Reference.cs文件复制到你的实际项目中。你试过了吗? - Peyton Crow
显示剩余2条评论
1个回答

0

调试时,查看异常详细信息。根据您的描述,我的猜测是您将在 Fusion 日志中看到程序集加载错误,因为 WCF 服务的依赖项无法通过查找默认位置来满足。

例如,假设您正在引用定义了 WCF 服务并且依赖于像 log4net 或 nHibernate 这样的东西的 MrCritter.MyService.dll。只要那些依赖关系中的任何内容没有泄漏到 WCF 宿主中(例如返回 ILog),是可以编译成功的,但是如果这些依赖项不在它可以找到的地方(例如在执行目录中,在 GAC 中等),则在尝试实例化服务类时会抛出 ReflectionTypeLoadException 异常。


此外,我已经回答了另一个问题,如果这是我在这里所确定的问题,将解决您的问题:https://dev59.com/RnfZa4cB1Zd3GeqPNyAX#18943200 - nathanchere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接