2011-05-09 108 views
4

我有一個C#WinForms項目,其中包含一些通過添加標準類(不使用添加項目> WCF服務)在項目中創建的WCF服務定義文件。將WCF服務添加到項目

該項目包含一些依賴關係,需要我爲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文件中定義? (我認爲,如果我將服務添加到WCF服務配置編輯器中,則在定位所有CPU時,無論目標如何,我都可以進行任何修改)

+0

這聽起來像你正在嘗試與WCF服務交互,但沒有使用「添加服務引用」對話框。它是否正確?如果是這樣,爲什麼你不使用內置工具來做到這一點? – IAmTimCorey 2011-05-09 03:35:25

+0

是的,我沒有使用「添加服務參考」。我有在WinForms項目中定義的服務,但我從另一個項目中複製了代碼(我不希望它們鏈接)。但是,當我嘗試使用'WCF服務配置編輯器'配置WCF服務時(它在右鍵單擊app.config文件時位於上下文菜單中)時,服務不可用於配置。所以我試圖在WCF編輯器中使用嚮導添加它們。我不想在另一個項目中引用服務。 – ChrisAU 2011-05-09 03:41:52

+0

所以,如果我正確理解你,你將WCF服務項目(實際代碼,項目文件等)添加到你的新解決方案中。雖然它可能不是嚴格相關的,但你爲什麼要這樣做? WCF服務(以及一般OO)的要點是您可以設計一次並部署它供所有人使用。看起來你正在爲自己創造一個頭痛的問題,以便做一些對我沒有意義的事情。如果你有一個很好的理由(我確信可以有一個理由),不要費心去向我辯護,只是告訴我「是的,我們想過了」,它會很好。 – IAmTimCorey 2011-05-09 03:46:18

回答

0

調試時,查看異常詳細信息。根據你所描述的我的猜測是,你將在融合日誌中發生程序集加載錯誤,因爲通過查找默認位置無法滿足WCF服務的依賴關係。

舉個例子,你說的是引用MrCritter.MyService.dll,它定義了一個WCF服務並且依賴於諸如log4net或nHibernate之類的東西。只要這些依賴項沒有泄露到WCF主機中(例如返回一個ILog),那麼你可以編譯好但嘗試實例化服務類時會拋出ReflectionTypeLoadException,如果這些依賴項不在某處它可以找到(例如在執行目錄中,在GAC等中)。

+0

此外,我已經回答了另一個問題,可以解決您的問題,如果這是我在這裏確定的: http://stackoverflow.com/questions/18942832/how-can-i-dynamically-reference-an-裝配的是,長相換另一組裝/ 18943200 – nathanchere 2013-09-29 01:33:08