【问题标题】:About missing DLL when loading solution from TFS?关于从 TFS 加载解决方案时缺少 DLL?
【发布时间】:2016-02-26 19:58:44
【问题描述】:

我不太确定检查器(谁签入)和加载器是否做错了什么,或者 TFS 是否有一些我不知道的功能有助于检查器检查 TFS 建议的内容(列为 包含的文件),但仍然可以帮助加载程序轻松加载解决方案,而无需执行任何其他步骤(例如修复丢失的 DLL 问题,使用 nuget 重新安装丢失的 DLL,...) .

目前,如果检查器检查所有引用的 DLL,则不会出现问题。但是,这不是 TFS 默认建议您的。所以这是最难理解的事情(对我来说)。如果不签入 DLL(首先使用将项目添加到文件夹),加载解决方案后的加载程序将丢失 DLL。我想要的是当加载程序从 TFS 加载任何解决方案时,他不需要在构建和运行解决方案之前执行任何进一步的步骤(非常麻烦,甚至有时无法轻松解决)。当然,如果当前本地文件夹包含所有必需的 DLL,您将不会发现问题。该问题仅在您第一次加载解决方案时出现,或者有时您切换到新的解决方案(使用获取特定版本)并完全覆盖本地。

我对 TFS 还很陌生。如果我是唯一一个同时扮演检查器和加载器角色的人,我会选择签入 DLL,但我不确定这是否正确。

【问题讨论】:

    标签: .net visual-studio dll tfs


    【解决方案1】:

    这根本不是 TFS 特定的。它发生在各种版本控制中,并且在人们不注意他们签入的可怕项目和解决方案文件的所有环境中。

    规则一:不签入输出程序集。规则二:不要引用解决方案根目录之外的项目。规则三:永远不要引用输出程序集 (bin\Debug\Foo.dll)。进行项目引用或创建 NuGet 包。规则四:使用 NuGet 进行包管理,并使用私有 NuGet 服务器作为主要或备用服务器,以便您可以在 Internet 或 NuGet (您的连接)中断时进行构建。规则五:如果,如果你必须从不同的解决方案链接一个项目,只从它的“家”解决方案更新它的包,否则包路径会混乱。

    这些简单的规则将确保您的项目和解决方案可以在同事之间共享。但是你会惊讶于有多少人做错了这件事,并且拒绝改变他们处理推荐人的方式,从而积极地损害他们同事的工作效率。

    一个非常简单的检查是对您的解决方案进行干净的获取并尝试编译它。如果您收到参考警告(级联到编译器错误),那么您做错了什么。在文本编辑器中打开您的 .csproj 文件。如果有多个..\,你就有麻烦了。

    【讨论】:

    • 前 3 条规则是可以理解的(事实上这也是我长期遵循的)。然而,目前还不清楚使用 Nuget 包。您的意思是在使用 Nuget 包时,应该在从 TFS 加载解决方案后自动引用 dll(即使没有加载时间)?我不太确定,但我们的解决方案确实使用了 Nuget 包(打开管理器时,它会显示已安装包的列表),但奇怪的是引用(在引用节点下)标有黄色警告标志(表示缺少 dll)。我必须使用update-package 命令,这仍然很麻烦......
    • 我在项目的文本内容中找到了这个 *..\..\* (在 节点内)(还有更多参考)。所以这意味着它真的错了吗?你知道什么会导致这种情况以及如何解决这个问题吗?谢谢!
    • 好吧,那就是问题所在。包是相对于解决方案存储的,因此有人正在从另一个解决方案更新包。
    • 您可以通过编辑 .csproj 文件并使所有 NuGet 引用以“..\packages”开头来修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多