0

7 つのさまざまなプロジェクトが含まれている Visual Studio 2008 ソリューションがあります。これらの「プロジェクト」のうち 3 つは Web サイト (プロジェクト ファイルのない種類のプロジェクト) です。

すべてのディレクトリからさまざまな Visual Sourcesafe ファイルをすべて削除し、SLN ファイル内の Scc 参照と存在するすべてのプロジェクト ファイルを削除しました。SUOファイルとすべてのUSERファイルも削除しました。Visual Studio は、2 つの Web サイトがまだソース管理下にあると認識しており、Scc エントリを SLN ファイルに追加し直しています。

VSがまだ古いソース管理についてどのように知っているか知っている人はいますか?

編集: 私が言及しなかったもう 1 つのことは、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()
4

3 に答える 3

1

それらのものは有害です!Visual Studioは、slnファイルを構成するXMLを含め、あらゆる場所でSourceSafeへのリンクを固定します。

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)
于 2009-01-23T02:19:56.230 に答える
1

おそらく、VSのインスタンスに追加しようとしているだけです。キャッシュを削除する必要があるため、VS はもはや SS の下にないと判断します

  1. ファイルの下 -> SourceControl -> ワークスペース
  2. SSの場所を選択
  3. 編集
  4. 作業フォルダを選択
  5. 削除する!
于 2009-01-23T00:11:25.007 に答える
0

%APPDATA% ディレクトリに、Visual Studio は、Visual Studio で使用される Web サイトのリストを、そのサイトのいくつかの設定と共に保存します。

私の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 プロバイダーに作業コピーを参照するように指示するいくつかの定数文字列のみです)。

この情報をいくつかの場所にキャッシュすることで、不足しているプロジェクト ファイルを修正しようとしたと思います。しかし、このファイルが適切に文書化されていれば大歓迎です。

于 2009-02-06T12:11:59.647 に答える