在TFS中构建多个解决方案时已加载测试DLL

时间:2012-11-23 21:00:51

标签: .net tfs appdomain

我正在TFS的循环中构建2个解决方案,并且在这两个解决方案中我都有相同的测试DLL(在第一个解决方案中针对2.0,在第二个解决方案中针对3.5)。第一次通过时一切都很好,但在第二次通过时,我得到了这个:

API限制:程序集'file:/// D:\ Builds \ 1 \ Project \ Main \ Binaries \ FF3.5 \ Potato.dll'已从其他位置加载。无法从同一appdomain中的新位置加载它。

我如何解决这个问题,我可以强制卸载DLL吗?我可以对appdomain做些什么吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以尝试此解决方案,只需更改找到所有测试dll的表达式http://geekswithblogs.net/jakob/archive/2010/06/08/tfs-2010-build-dealing-with-the-api-restriction-error.aspx

编辑:

我进一步调查了这一点,似乎Test Assembly Filespec(2. Basic - > Automated Tests - > Test Assembly - > Test Assembly Filespec在默认模板上)正在使用FindMatchingFiles活动。因此,您必须编写一个只与您认为应该加载的文件匹配的模式。 我找不到使用该模式的指南,但这样的工作有效:

  1. _PublishedWebsites *** test * .dll(在_PublishedWebsites文件夹中查找名称包含单词test的所有dll)
  2. test .dll(查找名称中包含单词test的所有dll)
  3. * * test .dll(在基础文件夹下的所有文件夹中查找名称包含单词test的所有dll)
  4. 像这样的东西没有:

    1. _PublishedWebsites ** \ BIN *试验* .DLL
    2. * \ BIN *测试的.dll
    3. _PublishedWebsites *试验****测试* .DLL