1

(我知道我正在使用 Visual Source Safe,我别无选择,因为它附带 MSDN 订阅许可证,而且我的公司不想购买第三方源代码控制解决方案......)

我有一个 VS 2005 解决方案,其中包含 3 个 C# 类库项目、2 个 ASP.NET 网站项目和一个存储在 Visual Source Safe 数据库中的 ASP.NET Web 服务项目。一些项目引用了处理常见任务的通用库 DLL。

当一个新人在他们的工作站上设置解决方案并第一次构建它时,它会检查 ASP.NET 网站和 Web 服务项目的 bin 文件夹中的公共库 DLL。当当前正在处理该项目的另一个开发人员尝试构建时,他们会收到“文件已被其他用户完全签出”消息。

VS 2005 不会在引起头痛的 DLL 旁边显示复选标记。

有没有办法防止这种情况发生?

4

3 回答 3

2

为什么要将 bin 文件夹签入 SourceSafe?在我从事的项目中,第三方 dll 被检入与解决方案文件处于同一级别的单独文件夹(可能称为 ExternalLibraries 或 ThirdParty)中。编译过程将被设置为将 dll 复制到 bin 文件夹中。这可以通过 .refresh 文件或构建前或构建后步骤来处理。这样,VisualStudio/SourceSafe 将不会看到文件已更新,也不会尝试检出它们。

如果由于它们是依赖项而编译已经将文件拉入,我建议从 VSS 中删除 bin 文件夹。这与“从项目中排除文件夹”不同,后者在编译时从 VS05 中隐藏文件夹(并为您提供您提到的编译错误。)

如果第三方 dll 不会更改,另一种选择是在 VSS 中将这些文件设为只读。这样,任何用户都无法签出文件。(要将文件标记为只读,您需要从 VSS 管理工具更改权限;开发人员的工具没有该功能。)

至于为什么会这样,我不相信 VSS 会检查二进制版本号——它只关心修改文件的日期。如果新开发人员将所有代码提取出来,所有文件(包括二进制文件)都将以当前日期作为修改日期。这可能会导致不必要的结帐。

关于您后来的评论 - 我不确定为什么 VS05 不会将文件视为受源代码控制,但 VSS UI 会。我怀疑它与该文件夹中的 .vss 文件(和类似文件)有关。在这种情况下,VS05 不正确。

于 2008-11-19T19:03:23.257 回答
1

不确定这是问题还是最佳解决方案,但如果您更新每个开发人员的机器,以便他们安装相同的最新版本的常见 DLL,则不应继续发生这种情况。如果项目文件引用的版本与开发人员机器上安装的版本不匹配,我认为 VSS 会检查 \bin 文件夹中的 DLL。

于 2008-11-19T17:42:26.090 回答
0

@佩德罗:

在 VS 2005 IDE 界面中,它并不表示 \bin 文件夹在 VSS 中。当我在 VSS UI 中查看该项目时,它显示该项目已签出给在其工作站上进行了最新构建的用户。

如果我使用“从项目中排除文件夹”选项,它将导致编译器抛出“未找到引用”错误。

在我的解决方案结构中,类库项目使用“添加引用”命令创建对第三方 DLL 的引用。然后我在我的 ASP、NET 网站和 Web 服务项目(使用网站项目模板)中设置对类库的项目引用。因为类库依赖于第三方 DLL,所以它们被复制到 \bin 文件夹中。

如何通过 VSS UI 将文件设置为只读?

于 2008-11-20T00:24:14.203 回答