VS 2012 .user文件导致不必要的构建

4
有很多关于Visual Studio构建项目的文章,但似乎没有涉及到这个特定问题的。我使用的是Visual Studio 2012专业版更新4。在我的解决方案中,我有一个单元测试项目,它引用了一个BizTalk转换项目,这个项目又引用了一个BizTalk模式项目。每次我选择运行单元测试时,整个解决方案都会被构建,即使没有进行任何更改。在构建窗口中显示的第一行如下所示:“输入文件'C:\Workspaces\rbowman\Branches\Current-branchRB\WareHouse\FFF.Enterprise.WareHouse.Schemas\FFF.Enterprise.WareHouse.Schemas.btproj.user'在输出文件'C:\Workspaces\rbowman\Branches\Current-branchRB\WareHouse\FFF.Enterprise.WareHouse.Schemas\bin\Release\FFF.Enterprise.WareHouse.Schemas.pdb'之后被修改。”请注意:似乎是“.user”文件导致了重建。有人知道如何防止这种情况吗?奇怪的是,我只在BizTalk proj文件中遇到了这个问题。我在多个解决方案中看到了这种行为,但问题文件总是被识别为btproj.user。这个视频演示了这个问题: screencast link

如果我在项目中包含了一个不存在的文件,通常会出现这种情况。 - MrTux
你是指由于 .user 文件导致重建的项目(在我的情况下是 schemas.btproj)吗?如果该 proj 包含一个 VS 无法在磁盘上找到的文件,我想我会在解决方案资源管理器中看到“缺少文件”图标,但在整个解决方案中我都没有看到这样的图标。 - Rob Bowman
设置文件的只读属性。这将让您保持安宁,否则当程序尝试更新文件时,就会出现问题,您就会知道更多情况了。 - Hans Passant
我喜欢你的建议,汉斯。不幸的是,在 WareHouse.Schemas\FFF.Enterprise.WareHouse.Schemas.btproj.user 上设置只读标志没有任何效果 - 我收到了相同的消息,即使没有进行任何更改也构建成功 :( - Rob Bowman
当您删除.user文件时会发生什么? - Gruff
显示剩余5条评论
3个回答

1
如果您刚打开解决方案,即使自上次构建以来没有更改,如果您单击“运行全部”,它将按照测试资源管理器中的说明进行构建。

enter image description here


如果我在测试运行完成后立即选择“全部运行”,即第二次请求运行,我会遇到相同的问题。我已经添加了一个屏幕录像以更好地说明问题:http://biztalkers.com/video/build-before-test.mp4 - Rob Bowman
是的,运行全部似乎总是会导致重新编译,这是 Visual Studio 2012 的“特性”。即使运行选定的单元测试也会导致重新编译,但通常它会意识到项目已经是最新的。在 Visual Studio 2010 中它以前不会这样做。 - Dijkgraaf

1

您应该从源代码控制中删除 *.user 文件。

这些文件存储用户特定的设置,不应该被检入源代码控制。


1
我曾经遇到过同样的问题。BizTalk项目坚持在每次构建时更新btproj.user文件,导致每次都需要完全重建。
我使用以下解决方法解决了这个问题:将ACL写标志设置为拒绝。构建无法更新文件,只有在真正需要时才会构建项目。
在我的情况下,构建时间从10分钟缩短到2分钟。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接