0

我有一个非常奇怪的情况,当我的同事更新到我的软件的本地副本时,我的同事提交到存储库的更改,Visual Studio 无法立即识别它们并重新加载。结果(这很奇怪)是大多数时候,我会在不重新加载项目的情况下保存我的更改,并且会覆盖我同事的更改。令人尴尬的是,有时有人问我为什么必须更改一段代码,而实际上我没有。另一件事是,当我签入一些 VS 项目级别的更改时,例如当有人添加新类、表单或其他任何东西并继续在 Visual Studio 中工作时,我至少需要 5 到 10 分钟才能收到警告进行了一些更改,并被要求重新加载项目等...

我认为视觉工作室中应该有一个设置来触发自动重新加载,但找不到它。到目前为止,这影响了我和另一个人,但我的是最奇怪的,因为它可能需要长达 30 分钟才能开始重新加载项目。

欢迎任何想法

这是我的设置 在此处输入图像描述

4

3 回答 3

0

如果您确定问题出在 Visual Studio 上(例如,文件在磁盘上确实发生了变化,但您在 Visual Studio 中看不到它)

确保Detect when file is changed选中该选项。

Tools > Options > Environment > Documents > Detect when file is changed outside the environment

在此处输入图像描述

于 2013-03-21T08:51:45.107 回答
0

由于您有时会因外部更改而收到重新加载项目的警报,这意味着您已经拥有在 Visual Studio 中检测文件更改所需的设置。

但是,仅当 .csproj(或 .vbproj)或 .sln 文件发生更改时才会触发重新加载项目/解决方案。

顺便问一下,您是否使用了一些版本控制系统?您似乎只是在共享解决方案并同时进行编辑。

于 2013-03-21T09:00:40.157 回答
0

如果您正在使用源代码管理,您需要将本地工作区与服务器同步(“获取”最新代码),然后您的同事所做的任何更改将被复制到您的 PC。

如果您在进行更改之前没有“获取”最新代码,那么您可能必须将您的更改与其他人的更改合并,这可能是一个困难、耗时甚至危险的过程 - 特别是如果您使用默认的 Visual Studio 自动合并过程,这通常会做错事,导致代码基本上损坏(例如,就像您所描述的那样,看起来您删除了同事的作品)。

使用源代码控制的最佳方式是“很少且经常”的方法:

  • 在开始任何新工作之前获取最新的源代码,以便您的 PC 尽可能保持最新。
  • 经常“获取”最新代码通常是一种好习惯(例如,我每天早上第一件事就是这样做),以便尽早标记并处理任何合并冲突。在合并之前等待的时间越长,合并过程就越糟糕。(警告:在你得到它之前检查你的构建系统,确保服务器上的当前版本的代码正在运行——你不想把损坏的代码放到你的电脑上,因为它可能会阻止你工作)。
  • 安排尽可能多的小增量步骤,以便在完成后安全地签入(而不是在数百个文件上工作 3 个月,然后将其作为一项重大更改转储到系统上)
  • 当您准备好签入时,获取最新代码、重建并重新测试您的更改,以确保它们在与最新程序代码集成时仍然有效。仅在一切正常时才签入。

另请注意,当您尝试编辑文件时,源代码控制提供程序可能会自动为您“获取”该文件的最新版本(这可能导致 Visual Studio 告诉您它已重新加载文件,并可能解释您为什么说“更新”有时需要一段时间,因为直到您开始编辑最近被其他人更改的新文件时才会发生这种情况)。如果是这种情况,那么事实是您没有“更新”整套源代码,只有一个文件 - 在这种情况下,您确实需要获取源代码的所有最新更改(如果您不您可能会发现它是不可编译的,或者(更糟糕的是)编译但由于只有部分代码是最新的而表现出未定义的行为)

最后,签入代码时的一个非常好的做法是浏览您正在签入的文件列表,并将它们与最新的服务器代码逐一进行比较,以查看您所做的更改。这听起来可能很费力,但它有几个好处:

  • 它会提醒您所做的事情,这有时有助于填写签入注释以清楚地描述您的所有更改并确保您不会错过重要说明。
  • 您会很容易地发现在合并过程中被搞砸的任何东西 - 将会有一些您知道自己没有接触过的似乎被创建或删除的代码块。因此,您将能够在签入之前发现并解决这些问题,而不是通过“删除”他们的更改来惹恼您的同事。
  • 我发现这对于查找我在签入之前忘记取出的临时调试代码非常有用。
  • 有时您甚至可能对即将签入的一些代码进行双重检查,然后想“嗯?我为什么要这样做?”。然后你可能会决定重新检查甚至重写你认为好的代码。

最后提示:您在编辑中显示的选项仅与您 PC 上的另一个程序对您 PC 上的文件所做的更改有关。如果其他用户进行更改并将其签入源代码管理,这些选项将无效。只有当您的源代码控制系统将这些更改复制到您的 PC 硬盘驱动器时,您可能会看到 Visual Studio 对这些更改做出反应(取决于您的源代码控制系统与 VS 的集成程度)。

于 2013-03-24T00:09:45.853 回答