我正在设置TeamCity来构建一些解决方案,其项目有一个OutputPath指令,可以将构建重定向到../../bin/Release或../../bin/Debug。解决方案显然在Visual Studio 2008中构建良好,但是当TeamCity构建解决方案时,它无法找到引用项目的程序集,并且我们得到名称空间错误(名称空间'SomeReferencedAssembly'在命名空间'AssemblyBeingBuilt'中不存在)。 / p>
有没有办法告诉TeamCity在哪里查找其程序集不在默认位置的引用项目?它确实理解该指令,因为在构建引用的项目时,输出是正确的。只是它之后构建的其他项目并没有找到它们所依赖的程序集。
答案 0 :(得分:1)
是不是第三方(你没编译的代码)或你的代码?
如果是第三方,那么您要确保您指向的源控制存储库根目录中的结果依赖性也被检出。 (或者更糟糕的是,将它们放在GAC中或在每个构建服务器上安装它们,除非必须这样做,否则不是一个好主意)
如果您的代码是由同一解决方案中的项目或不同的解决方案构建的?
在某种程度上,您可以使一个项目依赖于另一个项目,然后将构建指向解决方案,这是一件好事。
如果有两个不同的解决方案,那么你必须使用依赖关系(第5节)来设置工件依赖关系。
答案 1 :(得分:1)
您是否在teamcity中使用解决方案运行程序?如果是,则在每个csproj中指定引用的位置。您不需要进行任何其他配置。
验证引用是项目引用而不是程序集引用。程序集引用可能指向../../bin/debug/assembly.dll,在发布时进行编译时无法解析。
您可以查看csproj以确认,或者Visual Studio仅显示“程序集引用的属性”中的“特定版本”下拉列表。