.net - 复制本地如何工作? log4net.dll 没有被复制到 MyProject 输出目录

我想知道引用的 copy-local=true 到底是做什么的。它是否将引用的程序集及其所有依赖项复制到输出目录?

我的情况如下: 我有一个使用 log4net 的自定义日志包装器。我构建了一个 MyLogWrapper.dll 的发布程序集,其中 log4net.dll 引用设置为 copy-local true。从 MyProject 引用 MyLogWrapper.dll 并将本地复制设置为 true 应该会导致 log4net.dll 也被复制,对吗?我只在 MyProject 中引用 MyLogWrapper.dll 而没有它的依赖项。 log4net.dll 没有被复制到 MyProject 输出目录,但 MyLogWrapper 的所有其他依赖项都是。可能是什么问题?

我做了更多的实验,似乎如果我从 GAC 中删除程序集 (log4net.dll),它就会开始在本地复制。谁能确认这是问题所在?

最佳答案

不幸的是,根据以下从 MSDN documentation对于 GAC 中已有的程序集,CopyLocal 功能无法按预期工作。

If you deploy an application that contains a reference to a custom component that is registered in the GAC, the component will not be deployed with the application, regardless of the CopyLocal setting. In previous versions of Visual Studio, you could set the CopyLocal property on a reference to ensure that the assembly was deployed. Now, you must manually add the assembly to the \Bin folder. This puts all custom code under scrutiny, reducing the risk of publishing custom code with which you are not familiar.

更多信息可以在以下页面中找到,该页面解释了有关项目引用如何工作的详细信息。

MSDN: Project References

https://stackoverflow.com/questions/320295/

相关文章:

android-studio - 将 Android Studio 升级到 3.4 后无法连接 ad

xcode4 - Xcode 自定义构建配置导致静态库出现 "library/file not fo

javascript - 在 javascript eslint 中允许使用分号

java - 项目的 POM 丢失,没有可用的依赖信息

c# - 如何强制 VS 2010 跳过未更改的项目的 "builds"?

c - 开始使用自动工具

windows - 执行 : "gcc": executable file not found in

java - 使用 Maven 从文件名中删除版本号

Xcode - 如何查看构建命令和日志?

java - eclipse 中 "Build Automatically"选项的用途