我有一个在本地运行良好的构建,但是,不会在我们的TFS环境中构建。
我收到以下错误;
C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (1578):无法解析此引用。无法找到 程序集“Assembly.Services.Common”。检查以确保装配存在 在磁盘上。如果您的代码需要此引用,您可能会得到 编译错误。
有问题的程序集被检入TFS并位于以下位置;
/Root/BaseBinRefs/Assembly.Services.Common.dll
它在.net框架之外没有任何外部引用。
未能构建的项目位于TFS中的以下位置
/根/服务/ AssemblySolutionFolder / AssemblyThatIsFailing
在解决方案中的项目中引用程序集,并且程序集的HintPath看起来是正确的;
<Reference Include="Assembly.Services.Common, Version=1.0.0.0,
Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BaseBinRefs\Assembly.Services.Common.dll</HintPath>
</Reference>
如上所述,它在本地构建,我没有理由认为它应该在TFS内失败。需要注意的是,我一般都是TFS的新手,并且仍然试图将我们的第一个项目集成到这个环境中。
更新1
使用ProcessMonitor,我看到TFS尝试从;
加载文件C:\构建\ 1 \根\ BaseBinRefs \ Assembly.Services.Common.dll
哪个不存在,但在相对意义上是正确的。现在,当我查看Sources目录时,我看到包含Assembly.Services.Common.dll的BaseBinRefs,因此它已经下载了它们(我将BaseBinRefs添加到构建定义中)
答案 0 :(得分:11)
这可能是关于如何在构建定义中设置工作文件夹的问题(在工作区下)。
如果我正确理解了路径方案,则设置如下路径应该有效:
Active |$/TeamProject/Root/BaseBinRefs/ |$(SourceDir)\Root\BaseBinRefs
Active |$/TeamProject/Root/Services/AssemblySolutionFolder/|$(SourceDir)\Root\Services\AssemblySolutionFolder
但是,例如,这会导致麻烦:
Active |$/TeamProject/Root/BaseBinRefs/ |$(SourceDir)\
Active |$/TeamProject/Root/Services/AssemblySolutionFolder/|$(SourceDir)\