2012-10-28 57 views
3

我使用的是帶SP1的VS2010(也在同一臺機器上安裝了VS2012)。摩爾1.0 該項目使用.NET 4 我加成摩爾組件System.dll中並獲得編譯在HttpWebRequest中使用Moles for TDD

錯誤46的類型或命名空間名稱IReadOnlyList'不命名空間中存在「System.Collections中下面的錯誤.Generic'(你是否錯過了一個程序集引用?)[C:\ Test \ obj \ Debug \ Moles \ s \ mgcsproj] C:\ Test \ mgcs測試

IReadOnlyList .NET 4.5據我所知。

其他人有這個問題嗎?

+1

看來,如果你的.NET 4.5和痣,鼴鼠想反映.net 4.5程序集。解決方法是在[這裏](http://research.microsoft.com/en-us/projects/moles/molesdev11.aspx)中描述的,但它僅提供了mscore的示例。如果你想使用system.net,你必須添加更多標籤 – Haroon

+0

謝謝你,哈龍。什麼是您用於System.Net程序集以解決此問題的標記? –

+1

你會添加刪除標籤刪除特定的命名空間程序集<刪除命名空間=「System.Net.whatever你不需要」/> – Haroon

回答

0

更新後的解決方案 我能夠讓Pex在VS 2010中運行,安裝了.Net Framework 4.5。也許其他人已經解釋說這是解決方案,但我的問題(對於Moles和Pex來說是新的)是很多解釋都是模糊的。由於這些文章的作者,因爲他們讓我在正確的方向前進:

http://feherzsolt.wordpress.com/2013/02/13/moles-and-net-4-5/

http://www.daedtech.com/using-moles-with-the-system-assembly

因此,解決辦法是在測試中創建一個新的文件.moles(System.moles)項目與Pex創建yourAssemblyUnderTest.moles文件的同一級別,並將以下內容添加到文件中。

<Moles xmlns="http://schemas.microsoft.com/moles/2010/"> 
    <Assembly Name="System" ReflectionOnly="true" /> 
</Moles> 

您可能必須清理(或手動刪除obj文件夾內容)並重建,但此解決方案適用於我。我還注意到,第一個構建會報告構建錯誤,但錯誤會在後續構建中消失。

替代解決方案 我知道這是不是解決方案,但它是一個(差)的解決方法,讓Pex的運行...加上這是太長了評論。如果有人知道如何讓PEX在4.5.Net Framework的機器上運行,請回復。

這是我的場景。我有一臺帶有.Net Framework 4.5的機器,我安裝了Visual Studio 2010和2012。我安裝了Pex(en_visual_studio_2010_pex_0.94.51023.0_power_tools_x64_598803.exe),並可以在面向.Net Framework 4.0的VS 2010項目中運行Pex。我可以運行的Pex和它發現的問題......但一旦我提拔問題,單元測試,因爲下面的生成錯誤

The type or namespace name 'IReadOnlyList' does not exist in the namespace 'System.Collections.Generic' (are you missing an assembly reference?) 

一番搜索之後的單元測試項目將不會編譯,讀取的Pex或痣用4.0版本取代4.5 .Net Framework程序集我決定卸載4.5,安裝4.0,並試一試。在4.0上運行工作得很好,我不需要定義Mole類型過濾器來使其工作。然後我試着再次升級到4.5框架......但不幸的是,我最終回到了開始使用IReadOnlyList命名空間問題的地方。

+0

我放棄了VS2012和痣。 VS2012旗艦版擁有Fles 2.0版本。 – Haroon