Skip to content

.NET 间接引用时生成的 DLL 文件问题

🏷️ .NET

有三个项目,引用关系如下:

  • WebAPP 项目引用了 LibCore 项目
  • LibCore 项目引用了 LibA.dll

在 LibCore 的引用中 LibA.dll 的【复制本地】属性默认为 false,这时编译后的 bin 目录中是没有 LibA.dll 文件的。

如果将【复制本地】改为 true,则重新编译后 bin 目录中会多出 LibA.dll 文件。

到这里为止都比较好理解,没什么问题。

但是 WebAPP 项目就比较奇怪了,不管 LibCore 项目中 LibA.dll 的【复制本地】属性为 false 还是 true,生成的 bin 目录中始终没有 LibA.dll 文件。

参照 Visual Studio 中的引用项目和直接引用 DLL 文件 后面的附加部分。

但是按照这种说法也不对,因为 LibCore 中确实 using 并使用了 LibA.dll 中的类。不知道是不是属于文章中最后一句话的情况。

但是上面这段话不是绝对的,因为我发现如果将引用链末端的类库项目 LibC 换成 Asp.net 网站或 Asp.net 应用程序,其生成 DLL 文件的原理是不一样的,说明.net 的每种项目引用 DLL 文件时都有自己的一套生成规则,上面只讨论了类库项目的生成规则。

项目中处于引用链末端的类库为 Microsoft.AnalysisServices.AdomdClient.dll,不知道该 dll 的生成规则是什么。