4

许多类似的帖子,但我相信这不是重复的。当我在 Visual Studio 中添加引用时,有些 dll 会在本地复制,而有些则不会。

我知道我从其他地方获得的外部 dll 应该有一个本地引用,但是我想我从 Visual Studio 的长引用列表(.NET 和 COM)中选择的那些不需要在本地复制。我不。

现在我注意到当我从 COM 中选择 Shell32 时,dll 被复制到本地。默认情况下,“复制本地”设置为 true。所以我假设 .NET 是不需要本地引用的,而 COM 应该有。但是当我引用 Office 互操作对象 (COM) 时,我发现它们没有在本地复制。

  1. 有些是如何在本地复制而有些不是。(试图知道一些美好的事情)

  2. 另外,我应该如何为引用设置“复制本地”属性?是否建议仅按照 Visual Studio 默认执行的操作?

谢谢。

4

2 回答 2

1

默认情况下,VS 出错的可能性很小。您的开发机器(通常)与您的用户机器没有什么不同,重要的是您的 GAC 中的内容。您将像用户一样安装 .NET,因此框架程序集位于您的 GAC 和用户的 GAC 中,因此不要在本地复制。任何第 3 方 .NET 程序集都会被复制到本地,包括您自己的。

唯一的极端情况是 COM pias,主要互操作组件。你倾向于在你的开发机器上安装一些,Office 和 Internet Explorer pias 相当普遍。除非有人负责安装它们,否则它们将无法在用户的机器上使用。您实际上并不经常需要pia,仅当您自己的程序集从它们公开类型时才需要它们。只需将 Copy Local 翻转为 True。否则这是一个迅速消失的问题,由 VS2010 构建的项目支持嵌入互操作类型功能,也称为“no-pia”好东西。

最后但并非最不重要的一点是,您始终需要测试您的安装程序。在不太可能的情况下,您错过了某些东西,该测试将迅速将其清除。

于 2012-02-29T01:20:49.807 回答
0

我用它来控制发布到构建输出中的内容。如果引用是需要私下部署的东西,我将其设置为 true。否则,我将其设置为 false。

于 2012-02-29T00:02:07.643 回答