【发布时间】:2012-06-20 08:57:16
【问题描述】:
我最近在尝试处理 DeploymentItem 时失去了一些头发。
我们有一些用于本地 dll 的通用目录,许多测试都依赖于这些目录。
对于 C++ 项目,我们使用属性页,其中定义了这些路径。这些甚至可以通过一些手动编辑(因为它们是 MSBuild 文件)导入到 C# 项目中。我仍然不知道如何在测试中使用它们。
很遗憾,DeploymentItemAttribute 不能使用工作表中的属性,但可以使用环境变量。我希望避免强迫每个人定义全局环境变量...
我在网上看到了各种建议,但还没有真正找到简单的解决方案。
有人对此有好的方法吗?
【问题讨论】:
-
这些“公共目录”能否不存在于所有其他资源的已知相对路径中(即在源代码树中)?我就是这样做的。如果构建应该能够在没有外部工件的情况下检出/构建/测试,那么您必须在源代码树中保留本机依赖项。
-
不幸的是,这行不通。原因之一是我们使用 TeamCity 进行构建。 TC 决定在哪里签出源代码树。
-
我不明白,你在哪里签出源代码树无关紧要?如果依赖项都在源代码树中,并且部署项都使用相对路径,会发生什么?
-
以TeamCity为例:TC新建一个checkout目录,目录名在build agent工作目录下生成。例如:D:\TeamCity\buildAgent\work\1cadee32327408f3\ 因此,无法知道 dll 在哪里。 TC 这样做的原因可能是版本处理之类的。从公共目录而不是源代码树进行部署还有其他原因;此处的其他开发人员只是从公共存储库中获取最新版本。
-
是的,如果您想从源目录之外的存储库中获取 dll,那么您将遇到 TC 创建临时工作目录的问题。但我只是在谈论对 dll:s 在源代码树内部的相对引用,即在 TC 内部创建的工作目录。
标签: mstest deploymentitem