我有一个C#WinForms项目,它包含一些我在项目中创建的WCF服务定义文件,方法是添加标准类(不使用Add Item> WCF Service)。
该项目包含一些依赖项,需要我为x86处理器构建项目。
如果我使用WCF服务配置编辑器编辑app.config文件并尝试使用“创建新服务...”向导,然后浏览到项目EXE文件(在调试文件夹中)我收到错误,(我读过的是因为我的目标是x86处理器):
Could not load file or assembly 'EXE_FILE_NAME' or one of its dependencies. An attempt was made to load a program with an incorrect format.
因此,在将目标更改为所有CPU,再次编译项目,然后再次尝试在WCF服务配置编辑器中创建服务时,我现在得到一个不同的错误:
Could not load file or assembly 'SOLUTION_NAME, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
(为了澄清,我仍然可以在针对所有CPU时编译项目,但由于依赖性而在运行时收到错误)
是否有人能够帮我解决这个问题,所以我可以使用WCF服务配置编辑器中的向导添加app.config文件中定义的服务? (我认为如果我在定位所有CPU时将服务添加到WCF服务配置编辑器,我可以在此后进行任何修改,无论目标是什么)
答案 0 :(得分:0)
调试时,请查看异常详细信息。根据您的描述,我猜您将在融合日志中出现程序集加载错误,因为查看默认位置无法满足WCF服务的依赖性。
例如,假设你引用的是MrCritter.MyService.dll,它定义了一个WCF服务并依赖于log4net或nHibernate之类的东西。只要这些依赖项中没有任何内容泄漏到WCF主机中(例如返回ILog)是的,您将能够编译正常但在尝试实例化服务类时会抛出ReflectionTypeLoadException
如果这些依赖项不是它可以找到的地方(例如在执行目录中,在GAC等)。