1

我的问题似乎比较简单。我在 VS2010 中创建了 ac# 解决方案,其中有几个项目引用配置得当。我在我们的构建机器上使用 MSBuild,它工作正常,以正确的顺序逐步构建以提高效率。但是,如果我扩展接口(添加公共属性等)并增加其他人所依赖的项目之一的 AssemblyVersion,似乎 MSBuild 无法刷新下游依赖项上的缓存并抛出它不能的错误找到更改后的 dll 的先前版本。有趣的是,如果我之后立即再次运行构建,它会告诉我输出没有改变并且完成构建没有错误,但我不再相信它做了正确的事情。

有一个文件“ResolveAssemblyReference.cache”似乎包含旧的引用,如果我在每次构建之前从 obj/x86/Release 文件夹中删除它,我永远不会收到任何错误,但不知道输出是否有/应该是重建。

我想了解为什么 MSBuild 会为此苦苦挣扎,以及为什么在第二次构建时它似乎报告第一次构建确实有效并且目标是最新的。

在我了解发生了什么之前,我将不得不始终强制重建整个解决方案,以确保我有兼容的文件。

顺便说一句,如果我在 VS2010 中构建,我似乎从来没有遇到过这种情况,因为我怀疑它会在每次构建时适当地更新缓存。

更新:

我发现我在 MSBuild 的命令行上使用“OutDir”似乎是罪魁祸首。如果我删除它,那么引用似乎得到了适当的解决。但是现在我没有将我的输出复制到我需要它进行部署的地方......

4

0 回答 0