防止在VSS中检出第三方DLL

时间:2008-11-19 17:20:36

标签: visual-studio version-control visual-sourcesafe

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

关于你以后的评论 - 我不确定为什么VS05不会在源代码管理下看到这些文件,但是VSS UI会这样做。我怀疑它与该文件夹中的.vss文件(和类似文件)有关。在这种情况下,VS05不正确。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

@Pedro:

在VS 2005 IDE界面中,它未指示\ bin文件夹位于VSS中。当我在VSS UI中查看项目时,它会显示已签出给在其工作站上执行最新构建的用户。

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

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

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