为什么我的TFS没有构建所需的库?
我正在配置TFS 2015构建定义。当我构建本地解决方案时,所有需要的库和引用都构建在我的bin路径中,但是当构建在构建代理上运行时,我缺少一堆引用。我一直在调整复制本地设置和删除/重新添加引用,但没有运行使构建定义创建所有必需的。为什么我的TFS没有构建所需的库?
如果我编辑我的解决方案的项目,我想在这里建立的一个是什么,我有一个例子:
<Reference Include="WebArchitecture.Services.Common">
<HintPath>..\..\..\Libraries\WebArchitecture.Services.Common.dll</HintPath>
<Private>True</Private>
</Reference>
难道这导致引用私人标签不会在构建服务器上建或者是别的什么?该解决方案位于C:\ Users \ AKS \ Repositories \ Git \ CUIA \ source \中,并且这些库位于C:\ Users \ AKS \ Repositories \ Git \ CUIA \ Libraries中。
添加基于Patrick评论的其他信息: 我相信我们正在使用XAML。 bin文件夹被检入到我们的Git仓库中,所以所有需要的文件都应该在那里。
首先,请仔细检查您是否使用正确的相对路径正确引用了dll。
然后下一步就是确保文件被拉下到到生成代理/服务器的工作区。您可以通过检查服务器上的构建文件夹来验证。如果它们不存在,那么工作区映射可能会遇到问题,这些映射会定义开始构建时要获取的文件夹。
另一种检查方法是在构建代理/服务器上手动构建解决方案。如果服务器上的本地构建成功,那么问题可能与您的构建定义设置(如工作文件夹映射)有关,您需要更多诊断信息。
更新:
看来你的问题是没有在生成服务器生成斌文件夹。如果dll存在。作为一种变通方法,您可以使用在构建过程中模板的CopyDirectory活动复制bin文件夹中建立机,请参考例子在这个博客:TFS Team Build 2010: How to place the build output to a fixed location
您在目标属性指定CopyDirectory目录活动必须已经存在。空目录或子目录不会被复制。
我把它设置为使用文件路径而不是TFS服务器,我在我的测试中将其更改为服务器,当我检查了工件并且仍然无法看到bin文件夹时。我应该注意到,我知道bin文件夹被检查是不好的做法,所以我删除它。在本地它仍然建立它所需要的,但服务器不再创建一个bin文件夹或所需的文件。这些工作区映射是否会与我的解决方案或构建代理有关?其他人使用相同的生成代理没有问题,所以我不知道要检查我自己的解决方案来解决这个问题。 – Vistance
如果其他人使用相同的生成代理程序没有问题。您的构建定义可能有问题,例如您提到的工作区映射。您必须确保您的本地bin文件夹已映射到服务器。此外,正如你所说,检查bin文件夹是一个不好的做法,会导致一些构建参考问题,如你的。目前,我们经常建议开发人员尝试创建自己的Nuget包来处理这种情况,并在构建服务器上恢复nuget包,这也将使环境变得清洁。你也可以试试这个。 –
如何确保将本地bin文件夹映射到服务器?我是否需要在我的回购库中检入一个空的bin文件夹,以便它能够将文件放置在那里? – Vistance
哪个构建系统是使用旧的XAML还是新的Vnext?此外,您是否在源代码管理中检查bin文件夹(包括dll),或者将它们复制/部署到构建代理?似乎构建代理上的物理文件夹中没有相应的dll。您需要确保构建代理的环境与本地相同。 –