1

如何在 Visual Studio 中制作解决方案,以便驻留在其他目录中的 .dll 依赖项与解决方案本身受“获取最新”影响的位置完全不同。

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

因此,例如 .sln 文件位于:

D:\tfs\repository\main\SolutionA\solution.sln

并且 dll 位于:

d:\tfs\repository\main\SolutionX\Dependencies\Binaries

我真正想要实现的是有一个万无一失的方法来构建解决方案,包括以下场景:

1-全新安装windows、visual studio等
2-打开visual studio
3-在TFS上找到solution.sln,双击,这样visual studio就可以得到解决方案中的每一个项目和文件,并打开解决方案4-成功构建

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

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

4

3 回答 3

1

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

一种解决方法是...

解决方案设置

  1. 从 TFS 签出所有源代码(即Main和所有子目录)
  2. 在 Visual Studio 中打开您的解决方案(即MyApplication.sln
  3. 在解决方案资源管理器中,创建一个New Solution Folder被调用ThirdPartyDll的 ,然后添加适当的程序集引用(即Assembly1.dll, Assembly2.dll...)
  4. 将您的解决方案签入 TFS

示例文件结构

  • 主要的
    • 我的应用程序.sln
    • 来源
      • 我的项目A
        • 我的项目A.csproj
      • 我的项目B
        • MyProjectB.csproj
    • 依赖项
      • Assembly1.dll
      • Assembly2.dll
于 2012-10-19T15:35:10.617 回答
0

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

“您尝试添加到源代码管理的项目可能会导致其他源代码管理用户难以打开此解决方案或获取它的更新版本。为避免此问题,请从其他源的绑定根目录下方的位置添加项目解决方案中的受控项目。”

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

于 2012-09-09T01:26:45.003 回答
0

创建一个解决方案文件夹并将依赖项添加到其中,这样当 VS 获得最新的解决方案时,它将下载这些文件。有点脆弱,因为人们需要维护该文件夹,但它可以工作。

或者,创建一个 nuget 包并在构建时使用还原包。当您创建一个新的开发人员框(需要添加您的 nuget 包存储库)时,它将需要几个额外的步骤,但它适用于所有未来的项目,并且比解决方案文件夹方法更脆弱。

于 2012-10-20T01:32:30.263 回答