首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NDepend TypeInitializationExceptions测试NUnit时

用NDepend TypeInitializationExceptions测试NUnit时
EN

Stack Overflow用户
提问于 2014-12-02 03:43:52
回答 1查看 379关注 0票数 1

因此,我试图使用NDepend API为代码上的一些度量标准设置一个项目(运行得很好),但是,当我试图在它上运行一个测试框架(NUnit)时,我会被抛出TypeInitializationExceptions。

下面是一些代码来重现我所得到的错误:

  • 创建一个类库项目,并在NDepend上引用$NDependInstallPath$\lib\NDependAPI API,将副本设置为false。创建一个类如下所示: 公共类NDependProjectLoader {公共LoadAnNDependProject() { var provider =新NDependServicesProvider();}}
  • 在将成为测试类的解决方案中创建第二个类库项目。引用NUnit和您创建的引用NDependAPI的项目 NDependProjectLoader().LoadAnNDependProject();} TestFixture公共类NDependProjectLoader_Tests { Test I_can_load_an_depend_project() {新的I_can_load_an_depend_project}}
  • 构建,并使用您选择的测试运行程序运行测试(我已经使用了Resharper的测试运行程序和NUnit图形用户界面)。
  • 您将在var provider =NDependServicesProvider()行上得到一个NDependServicesProvider;
  • 从内部看,TypeInitializationException显示出根异常的消息是:

"{"Could not load file or assembly 'NDepend.Platform.DotNet' or one of its dependencies. The system cannot find the file specified.":"NDepend.Platform.DotNet"}".

  • 从AssemblyResolverHelper示例项目中添加NDepend.PowerTools并按照入门指南中的描述调用它并不会改变行为。
  • 我/假设/这个问题与NDepend API入门指南中的gettingstarted.html语句有关

“程序可执行程序集必须生成为$NDependInstallPath$\”

  • 在从测试运行程序启动代码的情况下,可执行文件将不位于ndepend安装路径中。
  • 从控制台应用程序调用NDependProjectLoader.LoadAnNDependProject(),其.exe是在$NDependInstallPath$\lib\中生成的(注意,.exe似乎需要在\lib\子文件夹中生成,而不是像入门指南中所说的那样在$NDependInstallPath$\中生成)不会产生异常,这进一步指出这就是原因。

因此,问题是,除了控制台应用程序之外,如何使用NDepend API呢?例如,这里我想通过一个测试运行程序来实现。另一个明显的候选是IIS应用程序。我漏掉了什么明显的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 17:34:18

事实上,问题来自于程序集的解析。您必须告诉CLR在哪里找到NDepend程序集(即在dir $NDependInstallPath$\Lib中),您有两个选项可以这样做。假设$NDependInstallPath$是"C:\NDepend“,例如:

  • 要么编辑AssemblyResolverHelper以解析"C:\NDepend\Lib“中的程序集
  • 或者为您的exe创建一个App.Config文件, element引用"C:\NDepend\Lib“。当CLR不解析程序集时,它将在这样的元素中查看dir
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27241485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档