2009-08-31 15 views
6

私は現在、複数の開発者がSubversionを使ってコードを配布しているASP.NETプロジェクトに取り組んでいますが、現時点ではまったく間違っています。 Subversionリポジトリを設定した人には、自分のコンピュータに固有の設定ファイル、bin \ *ディレクトリなどが含まれています。SubversionにASP.NET Webサイトを保存するベストプラクティス?

私は、このリポジトリをチェックアウトしてそれを自分のコンピュータ上で稼働させなければならない人で、コンパイルするためにすべてを並べ替えるためにかなり時間がかかりました。今私は私の会社の技術リーダーに送るためにSubversionのガイドラインの文書を書くことを考えています。そうすれば、プロセスを標準化してこれらの問題を回避することができます。

私が探しているのは、ガイドラインの入力です。

ビルド出力ディレクトリの外側でチェックされているサードパーティのライブラリを持つようにファイル構造を設定する必要があります(これらのファイルは作成されないためです)。リポジトリに含まれています)。このディレクトリの名前は "ライブラリ"にする必要があります。

Subversionにはマシン固有のファイルは含まれません。したがって、Web.configのテンプレートだけがチェックインされ、開発者が自分のマシンに合わせてカスタマイズします。この動作は既定でVisual Studio 2010に含まれており、個々の構成ファイル(Web.Local.config)にはテンプレート(Web.config)が自動的に適用されます。特定のマシンに適用される限り、Subversionにはローカル設定ファイルを含めないでください。

ソリューションファイルとプロジェクトファイルに絶対パスを含めないでください。

無視リストを設定する必要があります。で開始:

' 
*.user 
obj 
' 

ウェブサイトおよびサードパーティのライブラリに固有のクラスライブラリとASP.NET 2.0のWebサイトの例のファイル構造:

' 
/trunk/ 
    Libraries/ 
     ThirdParty.dll 
    MyClassLibrary/ 
     bin/ [Ignore] 
     obj/ [Ignore] 
     Properties/ 
      AssemblyInfo.cs 
     SomeClass.cs 
     MyClassLibrary.csproj 
      - Holds references to third-party libraries. For example: 
       ../Libraries/ThirdParty.dll 
    MyWebApplication/ 
     bin/ 
      ThirdParty.dll [Ignore; copied by build process] 
      ThirdParty.dll.refresh 
       - Contains "../Libraries/ThirdParty.dll" 
     Default.aspx 
     Default.aspx.cs 
     Web.config [Ignore] 
     Web.config.template 
    MySolution.sln 
     - Holds list of projects. 
     - Has reference information for projects. 
' 

代替Web.config.templateを使用しますWeb.configLocal.configファイルを含めるようにしてください。ただし、柔軟性が低い可能性があります。

WebサイトプロジェクトではなくWebアプリケーションプロジェクトを使用する場合、参照は.refreshファイルではなくプロジェクトファイルに格納されるため、bin /フォルダは無視されます。

上記の提案に間違いがありますか?何か不足していますか?誰も無視リストの提案がありますか?私は今、いくつかのエントリーを開始しました。

答えて

7

あなたは途中で良いステップだと思います。しかし、ファイルの代わりに/ MyWebApplicationのbinフォルダ全体に無視してみてはどうでしょうか? Subversionにあなたのビルド出力を追加しませんか?私は間違いなくそのことを悪い習慣と考えています。

また、あなたが転覆にweb.configファイルを追加することもできますが、要素内のappSettingsに新しいファイルを参照することができた場合:例えば

<appSettings file="local.config"> 

はその後local.configファイルがで無視されていsvn。それが私がいつも動作する方法です。

もちろん、すべてのプロバイダがconnectionString要素から接続文字列を取得する必要があるため、すべてのコンフィグレーション可能なパラメータがappSettingsにある場合にのみ機能します(プロバイダモデルが嫌い理由の1つです。 appSettingsからの接続文字列)

編集を取る:troethomは私を啓発し、あなたも

<connectionStrings configSource="ConnectionStrings.config"/>. 

は、だから私はどうなる事がある別のファイルにするConnectionString構成設定を上書きすることができますことを、指摘しましたプラSubversionコントロールの下にある実際のweb.configファイルを読み込みますが、ローカルで設定を上書きするその他のファイルはsvnによって無視されます。

+0

だけでは/ bin /ディレクトリによって決定された外部アセンブリ参照を投影しですから、.refreshファイルを/ bin /ディレクトリに置く必要があります(AFAIK)。 SVNがbin/*。dllを無視するようにすることができますので、これは問題ではありません。私の意図は、SVNにビルド出力を含めることは決してありませんでした。これはまさにこれらのガイドラインが避けようとしているものです。 私は実際に "Local.config"ファイルを最初にインポートするためのガイドラインを書いていましたが、configファイルには非常に多くのセクションがあるので、開発者が設定できるファイルのコピーを持つほうが良いかもしれないと思っていました。 – Blixt

+0

ああ - 私はプロジェクトファイルなしで2.0の "ウェブサイト"プロジェクトを忘れてしまった。私はそれらを好きではなかった。しかし、あなたは選択肢があります(WebアプリケーションはVS2005 SP1に再導入されました)。 「Webサイト」を作成してもプロジェクトファイルがなく、binディレクトリが参照されるようになるか、またはプロジェクトファイルによって参照が定義された「Webアプリケーション」を作成することができます。フォルダ。 しかし、私はsvnに "ウェブサイト"プロジェクトを配置することに多くの経験がありません。 – Pete

+0

Peteでは、接続文字列を別の設定ファイルに配置することもできます(.NET 1.1をまだ使用していない場合)。 ''を使用してください。 –

1

.refreshファイルを追加する必要があります。実際のDLLではありません。

Visual Studioプロジェクトシステムは、SCCプロバイダにソース管理に追加する必要があるファイルの一覧を送信します。 AnkhSVNは、この情報を使用してこれらのファイルを追加することを提案するSubversion SCCプロバイダです(他のファイルではありません)。

ファイル拡張子のみを参照するVisualSVNおよびその他のSubversionクライアントは、ASP.Netからこの情報を取得しません。

(注:.refreshファイルを削除すると、Visual Studioがコミットする必要があるファイルのリストにDLLを追加します)2.0 Web用

+0

DLLの参照をASP.NETの 'bin'フォルダに含めるには、上記の' .refresh'ファイルを使用することをお勧めします。 – Blixt

関連する問題