gpt4 book ai didi

c# - 由于依赖程序集的版本号,依赖程序集未复制到输出目录

转载 作者:行者123 更新时间:2023-11-30 13:05:04 24 4
gpt4 key购买 nike

在我从事的项目中,我们遇到了一个奇怪的错误。这是由于我们做了一些奇怪的分支而对版本号进行了一些有趣的操作造成的。我们已经解决了这个问题,但我很好奇我是否能得到有关 msbuild 表现出的行为的解释。使用 Nant 和 Visual Studio 2008 构建时观察到相同的行为。

设置:程序集的版本号由链接到所有程序集属性的公共(public)文件控制。这样做是为了让它们彼此同步。但是,我们有一些程序集是预编译的,只是偶尔构建。它们用于序列化,部分由 XSD 生成。由于序列化不会经常更改,因此它们显然不需要经常重建。

情况:链接文件中的版本号已更新。发生这种情况后,由于序列化发生了变化,预​​编译程序集被重建。发生这种情况后,决定需要一个较低的版本号。公共(public)链接文件再次更新,但版本号比以前低。

问题:最后一次更新版本号后,构建停止将一些 dll 复制到一个特定项目的输出目录,停止正常工作。我们将此项目称为 A。A 依赖于程序集 B,程序集 B 依赖于程序集 C,程序集 C 依赖于其中一个预编译的 dll。这看起来像一条长链,但这条链是关键。另一个关键事实是 A 没有对 C 的直接引用。在降低版本号之前构建 A 时,C 被复制到输出目录中。这个问题是,版本号降低后C不再复制到输出目录。可以通过三种方式纠正此问题。如果进行了任何这些更改,则 C 将正确复制到输出目录。

  • 在 A 的项目中添加对 C 的直接引用。
  • 版本号改回或高于构建预编译 dll 时的版本号。
  • 使用版本号更新重建预构建程序集。

第三个选项是问题是如何解决的。我的问题是这是 msbuild 的错误还是预期的行为?这种行为的目的是什么?为什么它不是创建错误而是不将 dll 复制到输出目录?

最佳答案

使用较低版本 生成较新 程序集可能是有问题的。当你需要重新制作一个新的时会发生什么?

基本上,如果您制作了某物的新版本,增加版本号;问题已解决,如您在第二个解决方案中所发现的那样。

关于c# - 由于依赖程序集的版本号,依赖程序集未复制到输出目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com