C# 为什么可以';t MSBuild解析程序集版本更改
我的问题似乎相对简单。我在VS2010中创建了一个c#解决方案,其中包含几个项目,这些项目的项目引用配置适当。我在构建机器上使用了MSBuild,它运行良好,以正确的顺序增量构建以提高效率。但是,如果扩展接口(添加公共属性等)并增加其他项目所依赖的其中一个项目的AssemblyVersion,则MSBuild似乎无法刷新下游依赖项上的缓存,并引发一个错误,即找不到已更改dll的早期版本。有趣的是,如果我立即再次运行构建,它会告诉我输出没有改变,并且完成构建时没有错误,但是我不再相信它做了正确的事情 有一个文件“ResolveAssemblyReference.cache”似乎保存着旧的引用,如果我在每次生成之前从obj/x86/Release文件夹中删除此文件,我将不会收到任何错误,但不知道是否已经/应该重新生成输出 我想了解为什么MSBuild会遇到这种情况,为什么在第二次构建中,它似乎报告第一次构建确实有效,并且目标是最新的 在我了解发生了什么之前,我必须始终强制重建整个解决方案,以确保我有兼容的文件 顺便说一句,如果我在VS2010中构建,我似乎从来没有遇到过这种情况,因为我怀疑它会适当地更新缓存每个构建 更新:C# 为什么可以';t MSBuild解析程序集版本更改,c#,visual-studio-2010,msbuild,C#,Visual Studio 2010,Msbuild,我的问题似乎相对简单。我在VS2010中创建了一个c#解决方案,其中包含几个项目,这些项目的项目引用配置适当。我在构建机器上使用了MSBuild,它运行良好,以正确的顺序增量构建以提高效率。但是,如果扩展接口(添加公共属性等)并增加其他项目所依赖的其中一个项目的AssemblyVersion,则MSBuild似乎无法刷新下游依赖项上的缓存,并引发一个错误,即找不到已更改dll的早期版本。有趣的是,如果我立即再次运行构建,它会告诉我输出没有改变,并且完成构建时没有错误,但是我不再相信它做了正确的事
我发现在MSBuild的命令行中使用“OutDir”似乎是罪魁祸首。如果我删除这个,那么引用似乎得到了适当的解决。但是现在我没有将输出复制到部署所需的位置…扩展接口是什么意思?您的意思是已将属性添加到msbuild脚本或项目文件中?您可以发布一个如何增加AssemblyVersion的示例吗?我的意思是,例如,向项目中定义的一个类添加公共属性,并修改该项目的AssemblyInfo.cs中的AssemblyVersion属性。这样[assembly:AssemblyVersion(“4.3.0.0”)]就变成了[assembly:AssemblyVersion(“4.4.0.0”)]