【问题标题】:Include GAC Assemblies in Bin在 Bin 中包含 GAC 程序集
【发布时间】:2011-02-12 23:45:19
【问题描述】:

任何想法如何强制 GAC DLL 被引用?

这是我的问题,我经常使用将自身注册到 GAC 的 3rd 方 DLL,当我在项目中使用它时,它会从 gac 中读取它,而当我部署时,我总是忘记添加DLL,因为它不在 Bin/Referenced 文件夹中。

是否强制 Visual Studio 添加 DLL 而不是来自 GAC?

【问题讨论】:

    标签: visual-studio deployment dll gac


    【解决方案1】:

    仅当 GAC 的程序集在一个参考级别深时复制本地才有效。例如,如果您有一个引用 GAC 程序集的项目,并且如果您的 Web 项目引用了该项目,那么当是,GAC 程序集将被复制到第一个项目的 bin 文件夹中,但不会复制到您的 Web 项目的 bin 文件夹中。

    因此,解决方案是直接在 Web 项目中设置对 GAC 程序集的引用,并指定 Copy Local。即使在这种情况下 web 项目没有直接使用引用,它也会将其复制到 web 应用程序的 bin 文件夹中。

    【讨论】:

    • 该解决方案充满危险,尤其是在涉及代码清理工具时。如果 Resharper 之类的内容告诉您“不需要”引用(想想大型项目团队)并且这些引用已被清理,那么您又回到了原点。
    【解决方案2】:

    右键单击程序集引用,选择属性,然后将“复制本地”更改为 true。这将导致它将程序集复制到部署目录中

    【讨论】:

    • 警告:这不是传递的!因此,如果 MyExe 引用 MyLib 引用 DllInGacMyLib 将被复制到本地,但如果它们已经在 GAC 中,依赖项将不会被复制到 MyExe
    【解决方案3】:

    在您的引用中选择 dll 并在属性窗口中设置 CopyLocal=true。

    【讨论】:

      【解决方案4】:

      选择引用并将 Copy Local 属性设置为 True

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        相关资源
        最近更新 更多