我开始玩F#所以我想我会先用它进行单元测试。问题是Visual Studio一直告诉我没有为我正在使用的某些类型定义类型,我无法理解为什么。
我已导入名称空间,我使用的类型是公共的。这是F#代码:
namespace OpcPersistenceTest
open System
open NUnit.Framework
open OpcPersistence
open OpcPersistence.Data
[<TestFixture>]
type PushServicesTesting() =
[<Test>]
let ``create a subscription, then shutdown service, start service, should retrieve original subscription`` =
let filters = new ResizeArray<Filter>()
[new Filter(Operand = "EventType", Operator = "=", Value = "SimpleAlarm");
new Filter(Operand = "Area", Operator = "=", Value = "Area_A")]
|> Seq.iter filters.Add
let keys = new ResizeArray<string>()
[Guid.NewGuid().ToString(); Guid.NewGuid().ToString();] |> Seq.iter keys.Add
let configId = PushServices.CreateSubscription(filters, keys)
PushServices.Shutdown()
PushServices.Startup()
let subscription = PushServices.GetSubscriptions(configId)
和一些C#代码:
using System;
using System.Text.RegularExpressions;
namespace OpcPersistence.Data
{
public struct Filter
{
public string Operand { get; set; }
public string Operator { get; set; }
public object Value { get; set; }
...
类型过滤器显然是未定义的(类型 PushServices 也是如此)但是如果我将它换成同一命名空间中的另一个类,我就没有这个问题。我甚至尝试改变班级名称,但无济于事。有什么想法吗?
修改
它也不会显示在intellisense中,因为命名空间的其余部分如下图所示。
答案 0 :(得分:2)
因为这显然解决了问题(来自评论)
当您使用多个项目时,智能感知和错误消息可能不正确,特别是如果您在未构建的情况下更改另一个项目中的文件。
重建解决方案可以解决问题。