2011-04-21 103 views
4

大約一週前我開始使用Thrift。我從SVN獲得了最新的源代碼並構建了C#庫(Thrift.dll)。我使用該庫來爲我的團隊將使用的數據類型創建一個TCP客戶端/服務器。這工作沒有問題,我只是遵循SVN回購示例代碼。Visual Studio在嘗試構建時失去參考

昨天,我想運行相同的測試,但通過HTTP代替。我在網上搜索了一些,發現從上週我得到代碼到昨天補丁「THRIFT-322」https://issues.apache.org/jira/browse/THRIFT-322

已應用於幹線。所以我從SVN更新了我的節儉來源,並看到了新的THttpHandler類。我重建了Thrift.dll,所以我可以使用THttpHandler類,但現在每當我引用新的DLL時,Visual Studio 2010會在編譯時給我一個錯誤:「無法找到類型或命名空間」Thrift「(是否缺少使用指令或程序集引用?)「。當我用舊的Thrift.dll替換引用時,我沒有得到這個錯誤。

我無法弄清楚我做錯了什麼,我只是重新編譯從SVN源Thrift.dll,我不能再鏈接到Thrift.dll。當我第一次添加引用時,它似乎可以正常工作。 Visual Studio爲我提供了正確的智能感知等等。一旦我嘗試構建它就像不再提及Thrift.dll一樣。有任何想法嗎?

我也將此提交給Thrift用戶郵件列表,我只是想,也許這是更一般的,這裏的某個人可能會提供幫助。

感謝, -Sean

+0

可能的工作,因爲引用的DLL編譯[爲什麼VS2010「失去」我的建立參考?](https://stackoverflow.com/questions/3010053/why-does-vs2010-lose-my-reference-on-build) – DaveInCaz 2017-10-13 14:12:55

回答

17

由於您提到使用VS 2010 ...我曾經在編譯.NET 4.0項目時看到過這個錯誤/行爲,而且我的項目目標框架設置爲「.NET Framework 4.0 Client Profile」而不是「.NET Framework 4.0」。所以你可能想檢查一下,看看它是否有幫助。

+0

謝謝!那樣做了。奇怪的是,它被設置爲較舊版本的Thrift.dll的客戶端配置文件而不是較新版本的客戶端配置文件。我將不得不閱讀差異。 – Sean 2011-04-21 14:43:58

+0

看起來像是因爲對System.Web的額外依賴性,它剛添加(http://stackoverflow.com/questions/4981204/net-framework-4-client-profile-system-web-dll)。 – Sean 2011-04-21 14:47:36

+0

非常感謝你。這讓我瘋狂! – Alastair 2011-08-04 19:21:24

0

一個建議我是在擴展檢查與「刷新」文件如Thrift.dll.refresh或類似的東西。該文件通常添加引用時添加。嘗試刪除此文件,替換DLL並嘗試內置並再次運行。

+0

感謝您的建議。不幸的是,我沒有看到任何刷新文件。我剛用一行代碼啓動了一個完整的新項目,並添加了對新Thrift.dll的引用,並且出現了相同的問題: -/ – Sean 2011-04-21 14:13:21

2

我有一個類似的問題,我不得不爲「.NET框架4.0' 「.NET Framework 4.0客戶端配置文件」開關,它採用」框架4.0'

+1

這幫助了我,因爲我的項目中引用的dll使用。 NET框架4.5。1和我的項目是4.5 ...當我將其升級到4.5.1時,找到了程序集引用,並且我的項目構建成功了 – Clarence 2016-02-03 17:42:57