【问题标题】:Adding references search folder for MSBuild from Visual Studio Build definition UI从 Visual Studio 构建定义 UI 添加 MSBuild 的引用搜索文件夹
【发布时间】:2016-09-18 04:04:36
【问题描述】:

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

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

我可以选择将所需的 Dll 与源代码一起添加到文件夹中,但我没有修改 .csproj 文件的选项。

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

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

/p:AdditionalLibPaths=$(SourceDir)/CommonDlls

但它不起作用。

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

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

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

【问题讨论】:

    标签: tfs msbuild continuous-integration


    【解决方案1】:

    您实际上并不需要脚本。 有两件事可以使这项工作发挥作用。

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

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

    所以,如果您添加了类似

    的映射

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

    使用$(TF_BUILD_SOURCESDIRECTORY)\CommonDlls

    【讨论】:

    • 答案有助于正确传递路径参数。但是“AdditionalLibPaths”没有达到所需的结果。用 ReferencePath 替换它可以正常工作。
    【解决方案2】:

    我花了将近 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)。

    【讨论】:

    • 完美。 ReferencePath 工作。它刚刚杀死了我几个小时。我希望我在搜索的早期就遇到了这个问题。谢谢一吨
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2015-04-10
    • 2021-05-25
    • 2018-04-13
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多