Msbuild 配置TFS2015 build以了解我的自定义nuget存储库位置

Msbuild 配置TFS2015 build以了解我的自定义nuget存储库位置,msbuild,visual-studio-2015,nuget,tfsbuild,Msbuild,Visual Studio 2015,Nuget,Tfsbuild,几天来,我一直在摆弄TFS2015基于任务的构建系统。我一直遇到的问题如下: 我正在尝试在项目中使用nuget包进行外部引用。这些外部引用实际上不是第三方库,而是我们公司的其他(共享)库。我能够在一个任务中恢复包,但我不知道如何让“VisualStudioBuild”理解在哪里可以找到恢复的包。它使用项目文件中的hintpath来确定要包含的外部库的位置。但是,这些路径(用于本地开发)与生成服务器上使用的路径不匹配。我可以向msbuild参数添加referencepath,但不会递归搜索此路径,

几天来,我一直在摆弄TFS2015基于任务的构建系统。我一直遇到的问题如下:

我正在尝试在项目中使用nuget包进行外部引用。这些外部引用实际上不是第三方库,而是我们公司的其他(共享)库。我能够在一个任务中恢复包,但我不知道如何让“VisualStudioBuild”理解在哪里可以找到恢复的包。它使用项目文件中的hintpath来确定要包含的外部库的位置。但是,这些路径(用于本地开发)与生成服务器上使用的路径不匹配。我可以向msbuild参数添加referencepath,但不会递归搜索此路径,nuget包还原还原包,包括包的整个文件夹结构

我的问题是。是否有一种正确的方法可以使“VisualStudio构建”步骤在不更改项目文件中的hintpath的情况下了解我的包的位置。如果不是,这里的正常方式是什么。我是否应该完全离开nuget,因为我们的引用实际上不是第三方库,如果是,解析引用的替代方法是什么(不向源代码管理添加二进制文件)


我的问题似乎与之相关,但他似乎已使用参考文献hintpath中指定位置的副本将其修复,这对我来说不是一个选项。在我看来,应该有一种我看不到的简单方法,可以将msbuild指向库的正确位置。

在任务还原包后,可以添加任务“复制文件”将包复制到位置。。\packages\lib\lib.dll


任务还原包后,可以添加任务“复制文件”,将包复制到位置“.\packages\lib\lib.dll”



msbuild步骤是否出错?我们还使用新的脚本构建系统。我们在MSBuild步骤之前添加了一个NuGet安装程序构建步骤,它似乎“正常工作”。您是在线TFS(VST)还是本地TFS?我们使用本地TFS。msbuild无法找到引用,因为它在项目文件的hintpath中指定的位置查找引用。但是,此位置与生成服务器上引用的位置不同。当我强制dll与开发机器上的dll位于同一位置时,nuget恢复开始工作。这可能也是你成功的原因。但是,在我们的场景中,不同的位置不应位于自定义程序集的版本控制路径中。至少在旧的TFS上,这是我试图避免的全部要点。我已经让它在版本控制中没有dll的情况下工作了,但是程序集不在其他位置。msbuild步骤出错了吗?我们还使用新的脚本构建系统。我们在MSBuild步骤之前添加了一个NuGet安装程序构建步骤,它似乎“正常工作”。您是在线TFS(VST)还是本地TFS?我们使用本地TFS。msbuild无法找到引用,因为它在项目文件的hintpath中指定的位置查找引用。但是,此位置与生成服务器上引用的位置不同。当我强制dll与开发机器上的dll位于同一位置时,nuget恢复开始工作。这可能也是你成功的原因。但是,在我们的场景中,不同的位置不应位于自定义程序集的版本控制路径中。至少在旧的TFS上,这是我试图避免的全部要点。我已经让它在版本控制中没有dll的情况下工作了,但是在不同的位置没有程序集。是的,我相信这会工作。但是我很难相信这是最好的方法。我们是想做这么奇怪的事吗?我想相信,更多的公司在这些问题上苦苦挣扎。经过一些研究,这是行不通的。我们在构建服务器上为所有包使用单个存储库。每次运行生成时,复制操作都会将所有包的所有dll复制到存储库的根目录。这当然会影响性能,但更重要的是:respository可以包含同一引用的不同版本,这将在根文件夹中相互覆盖。复制文件只能复制文件,您不需要复制所有dll,只需要复制所需的dll。我知道,但这意味着在维护构建任务方面需要做大量工作。每次添加/删除引用时,我们都必须更新生成过程。您可以在NuGet配置设置中修改存储库路径,以将NuGet软件包安装在指定的文件夹中,而不是默认的“$(Solutiondir)\packages”文件夹中。检查:是的,我相信这会奏效。但是我很难相信这是最好的方法。我们是想做这么奇怪的事吗?我想相信,更多的公司在这些问题上苦苦挣扎。经过一些研究,这是行不通的。我们在构建服务器上为所有包使用单个存储库。每次运行生成时,复制操作都会将所有包的所有dll复制到存储库的根目录。这当然会影响性能,但更重要的是:respository可以包含同一引用的不同版本,这将在根文件夹中相互覆盖。复制文件只能复制文件,您不需要复制所有dll,只需要复制所需的dll。我知道,但这意味着在维护构建任务方面需要做大量工作。每次添加/删除引用时,我们都必须更新生成过程。您可以在NuGet配置设置中修改存储库路径,以将NuGet软件包安装在指定的文件夹中,而不是默认的“$(Solutiondir)\packages”文件夹中。检查: