我有一个Visual Studio 2008解决方案,其中包含7个不同的项目。其中3个“项目”是网站(没有项目文件的项目类型)。
我从所有目录中删除了所有各种Visual Sourcesafe文件,删除了SLN文件中的Scc引用以及所有存在的项目文件。我也删除了SUO文件和所有USER文件。 Visual Studio仍然认为其中两个网站仍然受源代码控制,并且它会将Scc条目添加回SLN文件中。
是否有人知道 VS仍然知道旧的源代码管理?
编辑: 我没有提到的另一件事是我正在尝试删除VSS挂钩的文件已被复制到VSS的已知工作目录之外,python脚本运行和手动编辑在VS 2008中打开解决方案之前制作的文件或VS 2005(我遇到了问题)。
这是一个python脚本,我用它来清除这些文件,让我知道需要手动编辑哪些文件。
import os, stat
from os.path import join
def main():
startDir = r"C:\Documents and Settings\user\Desktop\project"
manualEdits = []
for root, dirs, files in os.walk(startDir, topdown=False):
if '.svn' in dirs:
dirs.remove('.svn')
for name in files:
os.chmod(join(root,name), stat.S_IWRITE)
if name.endswith(".vssscc") or name.endswith(".scc") or name.endswith(".vspscc") or name.endswith(".suo") or name.endswith(".user"):
print "Deleting:", join(root, name)
os.remove(join(root,name))
if name.endswith("sln") or name.endswith("dbp") or name.endswith("vbproj") or name.endswith("csproj"):
manualEdits.append(join(root, name))
print "Manual Edits are needed for these files:"
for name in manualEdits:
print name
if __name__ == "__main__":
main()
答案 0 :(得分:1)
它可能只是尝试将其添加到您的VS实例上。您必须删除缓存,以便VS认为它不再位于SS
之下答案 1 :(得分:1)
那些东西是有害的! Visual Studio在任何地方都会链接到SourceSafe,包括组成sln文件的XML。
我写了一篇article关于我将sourcesafe转换为subversion的经历,并附带了我用来清除垃圾的python脚本。请注意:
1)这是非常轻微的测试。进行备份,这样就不会搞砸sln / * proj文件。在之前和之后运行你的测试套件以确保它没有搞砸了什么(怎么可能?谁知道!但是发生了奇怪的事情。)
2)这可能是针对不同版本的sourcesafe和visual studio,因此您可能需要对其进行调整。无论如何,没有进一步的麻烦:
import os, re
PROJ_RE = re.compile(r"^\s+Scc")
SLN_RE = re.compile(r"GlobalSection\(SourceCodeControl\).*?EndGlobalSection",
re.DOTALL)
VDPROJ_RE = re.compile(r"^\"Scc")
for (dir, dirnames, filenames) in os.walk('.'):
for fname in filenames:
fullname = os.path.join(dir, fname)
if fname.endswith('scc'):
os.unlink(fullname)
elif fname.endswith('vdproj'):
#Installer project has a different format
fin = file(fullname)
text = fin.readlines()
fin.close()
fout = file(fullname, 'w')
for line in text:
if not VDPROJ_RE.match(line):
fout.write(line)
fout.close()
elif fname.endswith('csproj'):
fin = file(fullname)
text = fin.readlines()
fin.close()
fout = file(fullname, 'w')
for line in text:
if not PROJ_RE.match(line):
fout.write(line)
fout.close()
elif fname.endswith('sln'):
fin = file(fullname)
text = fin.read()
fin.close()
text = SLN_RE.sub("", text)
fout = file(fullname, 'w')
fout.write(text)
答案 2 :(得分:0)
在%APPDATA%目录中,Visual Studio会保存Visual Studio中使用的网站列表,其中包含该网站的一些设置:
在我的Vista计算机上,文件的确切位置是
C:\Users\{name}\AppData\Local\Microsoft\WebsiteCache\Websites.xml
此文件包含
等条目<?xml version="1.0" encoding="utf-16"?>
<DesignTimeData>
<Website RootUrl="e:\Documents\Visual Studio 2008\WebSites\WebSite\"
CacheFolder="WebSite" sccprovider="SubversionScc" scclocalpath="Svn"
sccauxpath="Svn" addnewitemlang="Visual Basic" sccprojectname="Svn"
targetframework="3.5" vwdport="60225"
_LastAccess="11-11-2008 10:58:03"/>
<Website RootUrl="E:\siteje.webproj\" CacheFolder="siteje.webproj"
_LastAccess="11-6-2008 14:43:45"/>
<!-- And many more -->
</DesignTimeData />
正如您所看到的,它包含的Scc引用也是解决方案文件的一部分。 (在这种情况下,SCC提供程序是AnkhSVN 2.0,因此它不包含实际的SCC映射;只是一些常量字符串,它们告诉SCC提供程序查看工作副本)。
我想通过在多个位置缓存此信息来尝试修复丢失的项目文件。但是如果这个文件被正确记录下来会很受欢迎。