1

我正在启动一个项目,该项目分为多个 VS 项目,并且我计划为每个项目设置单独的测试项目,所以我有一个这样的解决方案:

  • 项目1
  • 项目1.测试
  • 项目2
  • Project2.Test

internal我想测试一些课程。所以我使用 Visual Studio 2008 (SP1) 在我的测试项目中生成测试存根,并添加了InternalsVisibleTo. 但是我在内部类下得到了一条红色的波浪线。如果我编译我得到一个成功的构建,并且查看测试方法,红色曲线消失了。

但是,如果我对文件进行严格处理,那么曲线就会回来,并且我对内部类没有智能感知。

位于internalProject1 内,而测试位于 Project1.Test 内。为了完整起见,我决定以完全相同的方式生成测试方法,但这次是在 Project2.Test 中,这一次它被证明是完全有效的。我没有得到红色曲线,我得到智能感知,一切。

我已经尝试删除 Project1.Test 并重新创建测试方法,这是我能想到的一切,但无论我做什么,我都无法让内部在其配对的测试项目中完全可见,只能在设计的项目中为另一个项目。

我疯了,它不起作用!

4

3 回答 3

1

您是否可以在 InternalsVisibleTo 属性中使用字符串常量或除了确切的文字搅拌(不连接)以外的其他内容?我们习惯使用字符串常量来定义它,这对除了智能感知之外的所有东西都适用。通过粘贴为简单的字符串来替换它并且它可以工作。

删除您的 .suo 文件(与您的解决方案文件相同的文件夹)也可能会有所帮助。

于 2009-03-01T18:07:20.070 回答
1

我也见过这种情况,尤其是在使用强名称时。老实说,我并没有兴奋。只要它正确编译和测试,我就可以忍受这个奇怪的故障。例如,如果您遇到一个构建问题,我看到它抱怨它找不到其他(内部)方法 - 但干净的构建显示没有错误。再说一次,我不会为此烦恼......(也许我太宽容了?)。

特别是,我很少需要在测试中使用内部类型/成员(大部分时间我会尝试通过公共 API 进行测试);所以缺乏 100% 可靠的智能感知通常不是什么大问题。我已经知道我正在寻找的类型/成员(复制/粘贴;-p)。

当然,如果修复它会很好,但如果我是预算经理,我可能会接受它并首先关注其他功能。

于 2009-02-22T08:49:55.040 回答
0

这可能是 IntelliSense DB 文件的问题。尝试删除它并让 VS 尝试重建数据库。

为此,请关闭解决方案并删除(全部?) .ncb 文件。为了安全起见,只需将它们重命名为 .nc4 之类的名称即可。重新打开解决方案并重建它。让我知道它是否有效。

编辑:显然,ncb 文件仅适用于 C++ 项目。我不知道 C# 项目的 IntelliSense DB 在哪里,也找不到。如果我是你,我仍然会尝试找到一种方法来重置数据库。

阿萨夫

于 2009-02-22T08:21:32.923 回答