我想知道什么时候设置copy-local=true
引用有任何启发式方法?
如果引用类型只在内部使用我可以设置copy-local
到true
,但如果被引用类型暴露作为参数和返回值我设置copy-local
到false
和指示时,应使用我的媒体库的依赖特定版本应参照?
谁能为我澄清一下这个?
复制本地对于部署方案和工具很重要.作为一般规则,如果引用未包含在GAC中,则应使用CopyLocal = True.
复制本地意味着我必须手动部署此DLL才能使我的应用程序正常工作.如果它是假的,它实质上意味着"我依赖于另一个必须单独安装或链接的组件,DLL就会在那里".
复制本地实际上是为了支持本地调试.当您为应用程序打包和部署时,您应该将项目构建到相同的输出文件夹,并确保您拥有所需的所有引用.
在构建大型源代码树时,CopyLocal尤其令人痛苦.有一个关于如何在此处禁用CopyLocal的相关问题,您可以在MSBUILD中如何覆盖.NET中的引用的CopyLocal(专用)设置.以及Visual Studio(2008)中大型解决方案的最佳实践.
我在文章MSBuild:创建可靠构建的最佳实践,第2部分中写过如何处理构建大型源代码树的文章.
所以简而言之,我会说当文件复制导致你的构建花费更多时间然后你愿意为每个构建花费时禁用CopyLocal.
这真的是关于目标环境.如果copy local为false,则表示程序集已经存在于目标环境中(通常在GAC中).将其设置为true可确保它将显示在构建的输出中,因此可以更轻松地部署到目标环境.
查看以下MSDN参考资料,详细解释CopyLocal的行为.
项目参考
不幸的是,有一些怪癖,并且CopyLocal将不必按照预期的方式工作,如下所示构建的辅助装配中的装配参考.
MainApp.exe
MyLibrary.dll
ThirdPartyLibrary.dll(如果在GAC CopyLocal中不会复制到MainApp bin文件夹)
如果您不打算在目标计算机上将第三方程序集安装到GAC中,这会使xcopy部署变得困难.