C# Can';t枚举C中的F#列表#
在下面的F代码中,我有一个定义了两个值的模块:一个C# Can';t枚举C中的F#列表#,c#,exception,f#,C#,Exception,F#,在下面的F代码中,我有一个定义了两个值的模块:一个int list和一个(int list)list 在下面的C代码中,我有一些单元测试,它们试图迭代在F中定义的列表值 当我运行单元测试时,我得到以下输出 [1;2;3]3 1 2 3 [[1;2;3];[2;3;4]]测试 'MasterMind.Test.ConsistentCodeTests.CaniterateListsofList'失败: System.EntryPointNotFoundException:未找到入口点。 位于Syst
int list
和一个(int list)list
在下面的C代码中,我有一些单元测试,它们试图迭代在F中定义的列表值
当我运行单元测试时,我得到以下输出
[1;2;3]3 1 2 3
[[1;2;3];[2;3;4]]测试
'MasterMind.Test.ConsistentCodeTests.CaniterateListsofList'
失败:
System.EntryPointNotFoundException
:未找到入口点。
位于System.Collections.Generic.IEnumerable'1.GetEnumerator()
在System.Linq.Enumerable.Count[TSource](IEnumerable'1源)
ConsistentCodeTests.cs(49,0)
:
在MasterMind.Test.ConsistentCodeTests.CaniteralistsofList()中
1次通过,1次失败,0次跳过,耗时3.11秒(NUnit 2.6.4)
访问int列表
可以正常工作。C#代码可以成功地打印它、获取它的计数并迭代它
试图获取(int list)列表的计数或迭代该列表的值
会引发EntryPointNotFoundException
。我不知道如何修复此错误
模块游戏引擎
设aList=[1;2;3]
让列表=[1;2;3];[2;3;4]]
[Test]public void caniteralist()
{
控制台.WriteLine(游戏.引擎.aList);
Console.WriteLine(Game.Engine.aList.Count());
foreach(游戏中的inti.Engine.aList)Console.WriteLine(i);
}
[测试]公共void caniteralistsofsoflists()
{
控制台.WriteLine(游戏.引擎.列表);
Console.WriteLine(Game.Engine.listOfLists.Count());
}
听起来像是FSharp.Core
版本不匹配。检查您的某个软件包是否未安装FSharp.Core
v3.something-如果安装了,请更新到最新的稳定软件包
如果这还不够,请在测试项目的app.config中(假设您的测试运行程序会注意它)检查是否存在到正确v4程序集的绑定重定向
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
如果这仍然没有帮助,请删除测试项目下的obj
文件夹并重新生成。如何调用测试运行程序?很奇怪,它应该可以工作。你应该很容易得到2。我已经在F#interactive中检查过了,它是有效的:opensystem.Linq;;设a=[[1;2;3];[2;3;4];;设b=a.Count()
b=2。在一个普通的控制台程序中,您发布的代码对我来说非常好。我不明白为什么您在单元测试环境中会得到不同的结果,但是您需要改进这个问题,以使问题是可再现的,也就是说,使用。详细解释如何配置适当的单元测试线束以再现问题,或者提供一个好的独立控制台程序示例。是的,这就是问题所在。谢谢