我正在为存储在TFS2015中的.net解决方案(另一家公司)配置XAML构建定义。
该解决方案使用安装在开发人员计算机上但不存在于Build服务器中的软件X的Dll引用。 (FTS和Build服务器在许多客户端之间共享)。
我可以选择在文件夹中添加所需的Dll以及源代码,但我没有选项来修改.csproj文件。
在构建定义中,我尝试在MSBuild参数字段中添加以下内容:
/p:AdditionalLibPaths=$/[long tfs path here]/CommonDlls
/p:AdditionalLibPaths=$(SourceDir)/CommonDlls
但它不起作用。
理想情况下,我想从源代码的根目录中指定一个相对文件夹。 (静态路径可能有效,但仅适用于一个构建服务器和代理,这不是共享构建的目标)。
关于如何定义此参数的任何想法?
还可以选择添加预建脚本路径。我可以存储脚本文件和源代码。有关如何编写此类脚本文件的任何指针?
答案 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)。