从Visual Studio构建定义UI添加MSBuild的引用搜索文件夹

时间:2016-05-20 19:18:04

标签: tfs msbuild continuous-integration

我正在为存储在TFS2015中的.net解决方案(另一家公司)配置XAML构建定义。

该解决方案使用安装在开发人员计算机上但不存在于Build服务器中的软件X的Dll引用。 (FTS和Build服务器在许多客户端之间共享)。

我可以选择在文件夹中添加所需的Dll以及源代码,但我没有选项来修改.csproj文件。

在构建定义中,我尝试在MSBuild参数字段中添加以下内容:

/p:AdditionalLibPaths=$/[long tfs path here]/CommonDlls

/p:AdditionalLibPaths=$(SourceDir)/CommonDlls

但它不起作用。

理想情况下,我想从源代码的根目录中指定一个相对文件夹。 (静态路径可能有效,但仅适用于一个构建服务器和代理,这不是共享构建的目标)。

关于如何定义此参数的任何想法?

还可以选择添加预建脚本路径。我可以存储脚本文件和源代码。有关如何编写此类脚本文件的任何指针?

2 个答案:

答案 0 :(得分:1)

你真的不需要一个脚本。 有两件事可以做到这一点。

第一步是确保将DLL下载到代理工作文件夹,最简单的方法是在构建工作区中映射$/[long tfs path here]/CommonDlls;这在“构建定义”的源设置选项卡中指定。请注意在映射中使用$(SourceDir)标记(请参阅here)。

第二点是对下载的文件夹使用正确的引用:使用TF_BUILD_SOURCESDIRECTORY变量(有关完整列表,请参阅here)。

所以,如果你添加了像

这样的映射

$/[long tfs path here]/CommonDlls - > $(SourceDir)\CommonDlls

使用$(TF_BUILD_SOURCESDIRECTORY)\CommonDlls

答案 1 :(得分:0)

我花了将近20次试验来获得正确的一次,这一切都始于考虑所有其他目录所需的警告时间,我可以忽略它但是这里首先是警告

  

C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1820,5):警告MSB3245:无法解析此引用。无法找到程序集“nameOfDllFile”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。

这是让它运作的论据

/p:ReferencePath="$(build.sourcesdirectory)\Binaries"

其中Binaries相当于问题中的CommonDlls,这完全是因为MSBuild版本之间的模糊文档和差异,我的是14.0(VS2015)。