为啥在修改引用的程序集时会重建其他程序集?

Posted

技术标签:

【中文标题】为啥在修改引用的程序集时会重建其他程序集?【英文标题】:Why are other assemblies rebuilt when a referenced assembly is modified?为什么在修改引用的程序集时会重建其他程序集? 【发布时间】:2021-09-04 06:01:09 【问题描述】:

我有一个名为 Company.Base.dll 的基础程序集。

它已在其他一些项目中使用。比如我在ProjectOne.dll中使用过。

但是,当我在 Company.Base.dll 中更改一个类时,比如向其中一个类添加一个方法,我看到 ProjectOne.dll 在构建后也发生了更改。为什么会这样?

这是我采取的步骤:

    Company.Base.dll的类中添加方法 构建Company.Base.dll 构建ProjectOne.dll 比较 ProjectOne 的新 dll 和它的旧 dll,我发现它已经改变了。

为什么?

【问题讨论】:

【参考方案1】:

这是因为当您构建一个项目时,它是另一个项目的依赖项/引用,默认情况下,构建的文件(例如 ref.dll)会复制到主 bin 项目文件夹,而不是构建在唯一的项目文件中。如果您转到主 bin 文件夹,您将看到这两个文件。 因此,如果您对依赖项/引用项目进行修改,则需要使用新的二进制内容更新该项目才能正常工作。 您可以在依赖项/参考 -> [参考项目名称] -> 属性 -> 本地副本上禁用本地副本 但是,除非您有一些程序集解析器或可以解决它的东西,否则您只会得到一个无法正常工作的项目,因为未更新的引用。

【讨论】:

以上是关于为啥在修改引用的程序集时会重建其他程序集?的主要内容,如果未能解决你的问题,请参考以下文章

当我有程序集时,WebAPI 发现引用错误

加载程序集时发生冲突的依赖项

加载依赖于另一个域的程序集时的 FileNotFound [重复]

有没有办法在使用c#扫描所有程序集时识别我的自定义程序集?

.NET 中的引用程序集

在 bigquery 中创建数据集时,谷歌 App 引擎出错