1

如何在Visual Studio中制作解决方案,以便驻留在某个其他目录中的.dll依赖关系与解决方案本身受“最新”影响的完全不同。对Visual Studio 2010解决方案和TFS的DLL依赖关系

我试过的是在解决方案本身内创建一个Dependencies解决方案文件夹,并向其中添加了dll,即使它们不属于解决方案的目录结构,也属于该解决方案。

因此,例如.sln文件是:

d:\ TFS \库\主\ SolutionA \ solution.sln

和DLL被:

d:\ TFS \库\主\ SolutionX \依赖性\二进制

我真正想实现是有来构建解决方案,包括以下情形万无一失的办法:

1 - 有窗口的全新安装时,Visual Studio等
2 - 打开Visual Studio
3- TFS上找到solution.sln,双击它,这样的视觉工作室获得每一个项目和文件解决方案,然后打开解决方案 4-成功构建

当我尝试使用Dependencies解决方案文件夹方法并重复上述场景时,会得到解决方案中的所有项目,打开它,但依赖项解决方案内容赢得'不要从TFS中取出(尽管Visual Studio在解决方案资源管理器上显示它们),我认为这是有缺陷的。

一些建议,不涉及创建前/后构建脚本表示赞赏。

+0

你有没有找到答案?我有同样的问题。我在源代码控制中有一个ThirdParty文件夹,它有几个第三方DLL依赖关系,我试图在运行TFS生成时复制这些依赖关系。谢谢 –

+0

对不起,我做了一些研究,但没有提出任何问题。猜猜看,最后基本上是组织起来的,并且确保从物理依赖文件夹中获得最新版本,但是这听起来很脆弱。无论如何,我的结局没有运气。 –

回答

1

当您尝试第一次使用TFS Source Control Explorer打开解决方案时,可能会发现并非所有的依赖关系都会被检索到 - 这条波浪线可能会突出显示您缺少的一些References

一个解决办法是...

解决方案安装

  1. 结帐所有的从TFS源代码(即Main和所有的子目录)
  2. 打开在Visual Studio解决方案(即MyApplication.sln
  3. 在Solution Explorer中,创建一个New Solution FolderThirdPartyDll,然后添加相应的程序集的引用(即Assembly1.dllAssembly2.dll。 ..)
  4. 入住您的解决方案TFS

示例文件结构

    • MyApplication.sln
      • MyProjectA
        • MyProjectA.csproj
      • MyProjectB
        • MyProjectB.csproj
    • 依赖
      • Assembly1.dll
      • Assembly2.dll
+0

确保所有工作:1.关闭Visual Studio 2.删除根文件夹'Main' 3.打开Visual Studio 4.在TFS中浏览到您的应用程序并双击您的解决方案(即'MyApplication.sln' )5。执行构建 – Pressacco

+0

备选方法:如果您发现维护“Dependencies”ssolution文件夹时很头痛,那么可以考虑在解决方案中添加“Dependencies”项目(例如类库)。这样做的好处是,您可以使用Visual Studio解决方案资源管理器中的“显示所有文件”按钮来快速添加新的DLL。您当然必须修改构建以排除您的“依赖项目”项目。 – Pressacco

+0

我列出的选项工作,但是是一个黑客。有人知道微软推荐什么吗? – Pressacco

0

您已遇到“从源代码管理打开”功能的限制。如果您将解决方案添加到Visual Studio的源代码控制中,您应该看到以下消息:

“您试图添加到源代码控制的项目可能会导致其他源代码管理用户难以打开此解决方案或变得更新为避免此问题,请从解决方案中其他源受控项目的绑定根目录下的某个位置添加该项目。“

从源代码管理打开将创建解决方案根目录(D:\ tfs \ repository \ main \ SolutionA)的工作区映射,但对SolutionA文件夹中的SolutionX文件夹没有单独的映射。在“新”机器上,您需要手动创建映射到d:\ tfs \ repository \ main的工作区映射,以便同时获得SolutionA和SolutionX文件夹。

+1

我很欣赏答案,但我没有任何问题获得项目。问题在于“无项目”依赖项,我的意思是任何在解决方案中不属于任何项目的文件,但是从解决方案的角度来看,它是一个松散的文件。为了实现这种状态,只需将解决方案文件夹添加到已存在的TFS解决方案中,然后在解决方案文件夹中右键单击 - >添加现有项目,然后添加由TFS控制的任何文件(位于同一工作区中),但不添加不属于解决方案中的任何项目。 –

0

创建一个解决方案文件夹和依赖关系添加到它,这样,当VS用于获取最新它将下载这些文件的解决方案。有点脆弱,因为人们需要维护该文件夹,但它工作。

或者创建nuget包并在构建时使用恢复包。当您创建一个新的开发者框(需要添加您的nuget软件包回购)时,它需要一些额外的步骤,但它将适用于所有前进的项目,并且不会比解决方案文件夹方法更脆弱。

相关问题