繁体   English   中英

在TFS 2015中引用共享项目

[英]Reference to shared project in TFS 2015

我正在使用许多控制台应用程序,并且它们都使用一个共享项目。 TFS中的分支如下所示:

-branchname
   --scripts
   --sharedlib
   --applications
        --application1
        --application2 etc.

有数百个应用程序都在sharedlib中引用该项目。 而且我们没有从中引用.dll ,因为某些应用程序团队希望自定义共享项目。

因此,要使所有应用程序正常工作,我已将TFS分支映射到本地,并打开了解决方案,添加了一个现有项目,并添加了共享项目.csproj作为参考(在Visual Studio 2015中) 我可以在应用程序的.sln.csproj文件中看到对共享项目的引用,如下所示:

..\..\sharedlib\commonproject\commonproject.csproj

这意味着它从应用程序解决方案文件夹上升了两个级别,找到了sharedlib文件夹,然后找到了.csproj文件。 它在本地工作正常。

但是,当我在TFS 2015中为应用程序创建构建定义时,这一切都破灭了。 由于TFS构建“获取源”步骤将共享库文件夹带.sln文件夹级别,因为TFS中的存储库映射是针对应用程序文件夹共享库文件夹进行的,因此分别映射$(build.sourcesDirectory)$(build.sorcesDirectory) \\ sharedlib路径。 因此,当它查看.sln文件并尝试向上两级查找共享项目.csproj文件时,它根本无法做到这一点,因为在构建服务器中,通用.csproj文件位于下一级.sln文件从此处复制到的位置: (sharedlib\\commonproject\\commonproject.csproj)

因此,如果我编辑.sln和.csproj文件以删除路径上的两个级别并将其简单地放置为(sharedlib\\commonproject\\commonproject.csproj) ,则它将在服务器上构建,但甚至不会以本地形式加载该路径在本地变得不正确。 因此,我似乎无法使其在本地服务器和TFS服务器上都能正常工作。

有什么办法可以解决这个问题?

我能想到的一种可能的解决方案是,在开始构建之前,将共享项目复制到构建服务器中的两个级别上,并保持.sln.csproj中的路径不变。 但是如何在TFS中设计该步骤?

任何解决方案将不胜感激。

谢谢

“某些应用程序团队希望自定义共享项目。” 他们还可以基于共享项目生成dll的多个版本,并使用Nuget来管理/导入所需的版本。

如果您的团队坚持使用项目引用而不是dll引用。 建议您使用相对路径参考而不是绝对路径。

由于它是应用程序解决方案文件夹中的两个级别,因此您可以尝试使用

$(SolutionDir)\sharedlib\commonproject\commonproject.csproj

您可以在构建定义中的“构建代理文件夹”上配置项目的本地路径。 我更喜欢的简单方法是在构建定义中将应用程序项目的路径下调两个级别,如下所示,然后在VS Build步骤中相应地更新路径:

Application: $(build.sourcesDirectory)\app\app 
Sharedlib: $(build.sorcesDirectory)\sharedlib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM