TFS构建失败.对源代码管理中的文件的未解析引用

Chr*_*int 10 c# tfs build visual-studio-2010

我有一个在本地工作正常的构建,但是,不会在我们的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>
Run Code Online (Sandbox Code Playgroud)

如上所述,它在本地构建,我没有理由认为它应该在TFS内失败.需要注意的是,我对TFS一般是新手,并且仍然试图将我们的第一个项目集成到这个环境中.

更新1

使用ProcessMonitor,我看到TFS尝试从中加载文件;

C:\构建\ 1\ROOT\BaseBinRefs\Assembly.Services.Common.dll

哪个不存在,但在相对意义上是正确的.现在,当我查看Sources目录时,我看到包含Assembly.Services.Common.dll的BaseBinRefs,所以它已经下载了它们(我将BaseBinRefs添加到构建定义中)

pan*_*lif 11

这可能是关于如何在构建定义中设置工作文件夹的问题(在Workspace下).

如果我正确理解了您的路径方案,那么设置如下路径应该有效:

Active |$/TeamProject/Root/BaseBinRefs/                    |$(SourceDir)\Root\BaseBinRefs
Active |$/TeamProject/Root/Services/AssemblySolutionFolder/|$(SourceDir)\Root\Services\AssemblySolutionFolder
Run Code Online (Sandbox Code Playgroud)

然而,例如,这会导致麻烦:

Active |$/TeamProject/Root/BaseBinRefs/                    |$(SourceDir)\
Active |$/TeamProject/Root/Services/AssemblySolutionFolder/|$(SourceDir)\
Run Code Online (Sandbox Code Playgroud)

  • @Jeremy:在我看来,将源控制的程序集插入GAC并不是一个好主意. (3认同)