团队构建:找不到生成的私有访问器
我们已经使用 TeamBuild 和测试进行持续集成构建大约 4 个月了,有一天,当仅在构建服务器上的一个测试程序集上运行测试时,这个问题在我们的一个测试程序集中突然出现。
{NameSpace}.Order_Accessor、Version=0.0.0.0、Culture=neutral、PublicKeyToken='{xxx}' 或其依赖项之一。系统找不到指定的文件。
这不是由其他地方提到的 Publicize.exe 问题引起的。单元测试在本地运行良好,并且确实创建了生成的程序集。
令人困惑的部分是,我们在许多项目中使用生成的私有访问器程序集,包括上面出现此问题的项目,没有任何问题。进一步调查此问题,生成的程序集永远不会被复制到 TestResults//Out 目录,这似乎是问题所在。我通过使用 TestRunConfig 部署设置从 SolutionRoot 添加程序集来确定这是问题所在,这会导致程序集清单不匹配错误。
我想知道是否有人在正确复制这些程序集时遇到过问题。如果有帮助的话,我们正在 Windows Server 2008 上运行 TeamSystem 2008。
以下也是相关文件的测试运行部署错误 运行存在以下问题:
TESTTOOLSTASK:警告:测试运行部署问题:无法获取测试指定的部署项目“电子邮件模板\OrderConfirmation.txt”(输出目录“电子邮件模板”)的文件“EmailServiceTest.EnqueueTest”:System.IO.DirectoryNotFoundException:找不到路径“持续集成构建\二进制文件\持续集成测试\电子邮件模板\OrderConfirmation.txt”的一部分。
TESTTOOLSTASK:警告:测试运行部署问题:无法获取测试“Email.Tests.EmailServiceTest.EnqueueTest”指定的部署项目“E-mail Templates\OrderConfirmation.htm”(输出目录“E-mail Templates”)的文件:System.IO.DirectoryNotFoundException:找不到路径“持续集成构建\二进制文件\持续集成测试\电子邮件模板\OrderConfirmation.htm”的一部分
TESTTOOLSTASK:警告:测试运行部署问题:程序集或模块“服务”未找到测试容器“\持续集成构建\二进制文件\持续集成测试\services.order.supplierintegration.tests.dll”直接或间接引用的“.Order_Accessor”。
We have been using TeamBuild and test for our continuous integration build for about 4 months and this issue just popped up the other day in one of our test assemblies when running tests on one of our test assemblies on the build server only.
{NameSpace}.Order_Accessor, Version=0.0.0.0, Culture=neutral, PublicKeyToken='{xxx}' or one of its dependencies. The system cannot find the file specified.
This is not being caused by problems with Publicize.exe noted elsewhere. The unit tests run fine locally and the generated assembly does get created.
The part that is confusing is that we use generated private accessor assemblies in numerous projects including the one with this issue above without any problems. Investigating this issue further, the generated assembly never gets copied to the TestResults//Out directory which appears to be the problem. I determined this was the issue by adding the assembly from SolutionRoot using the TestRunConfig deployment settings which results in an assembly manifest does not match error.
I am wondering if anyone has had issues with these assemblies being copied properly. We are running TeamSystem 2008 on Windows Server 2008 if that helps.
Below is the test run deployment error for the file in question as well
Run has the following issue(s):
TESTTOOLSTASK : warning : Test Run deployment issue: Failed to get the file for deployment item 'E-mail Templates\OrderConfirmation.txt' (output directory 'E-mail Templates') specified by the test 'EmailServiceTest.EnqueueTest': System.IO.DirectoryNotFoundException: Could not find a part of the path 'Continuous Integration Build\Binaries\Continuous Integration Test\E-mail Templates\OrderConfirmation.txt'.
TESTTOOLSTASK : warning : Test Run deployment issue: Failed to get the file for deployment item 'E-mail Templates\OrderConfirmation.htm' (output directory 'E-mail Templates') specified by the test 'Email.Tests.EmailServiceTest.EnqueueTest': System.IO.DirectoryNotFoundException: Could not find a part of the path 'Continuous Integration Build\Binaries\Continuous Integration Test\E-mail Templates\OrderConfirmation.htm'
TESTTOOLSTASK : warning : Test Run deployment issue: The assembly or module 'Services.Order_Accessor' directly or indirectly referenced by the test container '\continuous integration build\binaries\continuous integration test\services.order.supplierintegration.tests.dll' was not found.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来您的 TestRunConfig 部署期望这些文件位于“持续集成构建\ 二进制文件\”中,
我突出显示“二进制文件”部分是有原因的。这是 $BinariesRoot 属性指向的文件夹(除非被覆盖),并且由编译器使用。因此,我建议您仔细检查:
($BinariesRoot)Continously Integration Test
($BinariesRoot)持续集成测试
Looks like your TestRunConfig deployment expects that the files are in "Continuous Integration Build\ Binaries\"
I've highlighted the "Binaries" part for a reason. This is a folder the $BinariesRoot property points to (unless overridden), and it is used by the compiler. Therefore, I'd suggest you double-check that:
($BinariesRoot)Continuous Integration Test
($BinariesRoot)Continuous Integration Test