2009-08-06 5 views
1

Ich verwende SVN, um ein ASP.NET-Web-Projekt zu versionieren, an dem ich arbeite. Ich habe kürzlich beschlossen, eine Version der veröffentlichten Version der Site zu versionieren. Ich übertrage diese zusammen mit markierten Versionsversionen des Codes im Stammverzeichnis der Zweigstelle in das Repository. Dies erweist sich als nützlich, da ich mithilfe von SVN auf meinem Server bereitstellen kann.Problem bei der Verwendung von SVN mit VS.NET zur Version kompilierter Code - .svn-Ordner Konflikt mit/bin

Problem, das mir gegenübersteht, ist, dass ich einige Dateien im Ordner/bin meines Projekts (DLLs ohne externe Referenzen), die einen Ordner /bin/.svn erstellt haben, versionieren musste. Das Problem besteht darin, dass der Befehl Veröffentlichen von VS.NET darauf besteht, die .svn-Datei aus dem Entwicklungszweig in den Ordner/bin des Ausgabeordners zu kopieren. Dies "schaltet" im Grunde die Binärdateien dahin, um auf den Dev-Zweig zu zeigen. Das Ergebnis ist, dass der Inhalt des/bin-Ordners niemals tatsächlich in den kompilierten Bin-Ordner übernommen wird, da die Arbeitskopie auf einen anderen Teil des Repositorys verweist.

Gibt es eine Möglichkeit, Visual Studio zu zwingen, den .svn-Ordner beim Veröffentlichen zu ignorieren? Gibt es alternativ eine andere Möglichkeit, die Aufnahme statischer DLLs in ein Projekt zu übernehmen, ohne sie in den Ordner bin zu verschieben, so dass das Verzeichnis/bin von SVN ausgeschlossen werden kann (wie es sein sollte) (den GAC nicht verwenden)?

Antwort

3

Ich schlage vor, dass Sie nichts im .bin-Ordner versionieren. Platzieren Sie stattdessen alle Ihre referenzierten Assemblys in einem Ordner außerhalb Ihrer Projektordner. Dann stelle es bereit und baue es wo immer es hingeht. Der Build-Prozess zieht alle DLLs nach Bedarf an. Dies würde dann Ihren .svn-Ordner im Ordnerordnerproblem beheben!

7

Auf jeden Fall nicht setzen Sie den bin-Ordner in das Repository. Das wird dir für immer Albträume geben.

Legen Sie Ihre statischen referenzierten DLLs in einen Ordner mit dem Namen "Libraries" oder was auch immer, und legen Sie Ihre Projektreferenzen darauf fest. Sie werden automatisch zur Ausgabe kopiert.

+0

Können Sie einige Beispiele von Svn bin Probleme geben? Ich hatte ein Problem, wo ein Commit dlls ohne irgendeine Bestätigung löschte. – Steve

+1

Das größte Problem sind einfach die Konflikte, die es erzeugen wird. Jeder einzelne Build einer Arbeitskopie ändert die .dlls in/bin. Ein SVN-Update führt jedes Mal zu einem Konflikt, der gelöst werden muss. Außerdem können Prozesse Ihre Arbeitskopie sperren, so dass sie beim Update nicht überschrieben werden können. Es ist nur ein riesiger Kopfschmerz. – womp

2

Hmm .. Legen Sie sie in einen separaten Ordner in der Lösung und verweisen Sie sie. Nun, warum habe ich nicht daran gedacht (doh!). Denke, ich habe zu lange auf den Bildschirm gestarrt.

Vielen Dank.

+0

Hinzufügen einer Antwort in reserviert für ... Hinzufügen einer Antwort. Wenn Sie einer Person antworten möchten, die Ihre Frage beantwortet oder einen allgemeinen Kommentar abgegeben hat, fügen Sie einen Kommentar hinzu. –

Verwandte Themen