C# TFS构建失败。对源代码管理中的文件的未解析引用
我有一个在本地运行良好的构建,但是,它不会在我们的TFS环境中构建 我得到以下错误 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1578):无法解析此引用。找不到服务器 程序集“assembly.Services.Common”。检查以确保该程序集存在 在磁盘上。如果您的代码需要此引用,您可以 编译错误 相关组件已检入TFS,并位于以下位置 /根/BaseBinRefs/Assembly.Services.Common.dll 它在.net framework之外没有任何外部引用 未能生成的项目位于TFS中的以下位置 /根目录/服务/AssemblySolutionFolder/AssemblyThat失败 组件在解决方案中的项目中被引用,并且组件的提示路径似乎是正确的C# TFS构建失败。对源代码管理中的文件的未解析引用,c#,visual-studio-2010,build,tfs,C#,Visual Studio 2010,Build,Tfs,我有一个在本地运行良好的构建,但是,它不会在我们的TFS环境中构建 我得到以下错误 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1578):无法解析此引用。找不到服务器 程序集“assembly.Services.Common”。检查以确保该程序集存在 在磁盘上。如果您的代码需要此引用,您可以 编译错误 相关组件已检入TFS,并位于以下位置 /根/BaseBinRefs/Assembly.Se
<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>
假的
..\..\..\BaseBinRefs\Assembly.Services.Common.dll
如前所述,它是在本地构建的,我看不出为什么它会在TFS中失败。需要注意的是,我一般不熟悉TFS,并且仍在尝试将我们的第一个项目集成到这个环境中
更新1
使用ProcessMonitor,我看到TFS试图从加载文件
C:\Builds\1\Root\BaseBinRefs\Assembly.Services.Common.dll
它不存在,但在相对意义上是正确的。现在,当我查看Sources目录时,我看到BaseBinRefs,其中包含Assembly.Services.Common.dll,因此它已经下载了它们(我将BaseBinRefs添加到构建定义中)这可能是一个关于如何在构建定义中设置工作文件夹的问题(在“工作区”下)。
如果我正确理解了您的路径方案,按如下方式设置路径应该有效:
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)\
找不到程序集-启动生成时在服务器上使用ProcessMonitor,能否告诉我们它在哪里查找
assembly.Services.Common.dll
?@Jeremythonpson Update已添加,感谢在此查看可能的解决方案:@pantelif谢谢。我已经确认了这一点,并且它确实将文件复制到了我的源代码中,但是构建看起来仍然在另一个位置。你能用你的构建空间映射更新这个问题吗?这几乎肯定是问题的根源。我只是想添加使用GAC来解决这个问题。@Jeremy:在我看来,在GAC中插入源代码控制的程序集不是一个好主意。@pantelif如上所述,我已经添加了工作文件夹,它是正确的。这非常有趣。使用Visual Studio打开驻留在C:\Builds\1
下的SLN。我希望VS2010能够纠正ref&您的解决方案应该可以编译。现在,将这个失败的程序集.csproj
与签入的程序集进行比较-这可能会为问题提供一个提示。奇怪的是,我(暂时)实现的解决方案是使用一个本地binrefs文件夹,尽管这样做有效,但我更愿意解决最初的问题。我把所有东西都搬回去了,现在一切都正常了。我将把它标记为正确的答案,我相信这一直都与此有关,尽管如上所示,我正确地添加了路径。