我该如何确定哪些参考文件必须“本地复制”?

时间:2012-02-28 23:47:30

标签: .net visual-studio dll-reference copy-local

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

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

现在我注意到当我从COM dll中选择Shell32时,会在本地复制。默认情况下,“Copy Local”设置为true。所以我假设.NET是那些在COM应该没有本地引用的地方。但是,当我引用Office Interop对象(COM)时,我发现它们不是在本地复制的。

  1. 有些是在本地复制而有些则不是。 (试图了解一些不错的东西)

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

  3. 感谢。

2 个答案:

答案 0 :(得分:1)

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

唯一的角落案例是COM pias,Primary Interop Asssemblies。您倾向于在您的开发计算机上安装了一些,Office和Internet Explorer过滤相当常见。除非有人负责安装它们,否则它们将无法在用户的机器上使用。实际上通常不需要一个pia,只有当你自己的程序集从它们公开一个类型时才需要它们。只需将Local Local翻转为True即可。这是一个迅速消失的问题,由VS2010构建的项目支持嵌入互操作类型功能,也称为“no-pia”goody。

最后但同样重要的是,您始终需要测试安装程序。在不太可能的情况下,您错过了某些内容,该测试会迅速将其清除。

答案 1 :(得分:0)

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