2011-08-03 11 views
0

私はAsp.Net Webサイトを持っています(.csprojファイルはありません)。CruiseControl.net、SVN、Webサイトおよび依存関係

このウェブサイトのソースコードは、SVNによって管理されています。

ソース管理からbinフォルダを除外しました。

すべての外部アセンブリは、私のSVNのルートにあるDLLフォルダから参照されます。

私はcruisecontrol.netでこのウェブサイトを展開しようとしています。

問題:

クルーズコントロール負荷転覆からのすべてのファイル、それはの.slnファイルに対してのMSBuild.exeを実行します。これにより、エラーが発生します:外部アセンブリを見つけることができません(binフォルダが除外されているため)。

私がこれまでに見つかったソリューション:

を私のMSBuildタスクの前に、/ binフォルダに私のソース管理からDLLのrobocopyをを行います。

他に解決策はありますか? (プロジェクトに外部アセンブリを追加するたびに構成を編集する必要はありません)。

EDIT:

私は最終的にここに「リフレッシュファイル」技術を使用し、私は彼らに

class Program 
{ 
    private const string PATH_BIN = @"F:\WebSite\bin\"; 
    private const string PATH_REFERENCE = @"C:\DLL\"; 

    static void Main(string[] args) 
    { 
     foreach (string aFile in Directory.GetFiles(PATH_BIN)) 
     { 
      if(!aFile.EndsWith(".dll")) 
       continue; 
      string pathRefreshFile = aFile + ".refresh"; 
      if(File.Exists(pathRefreshFile)) 
       continue; 
      string referenceFilePath = PATH_REFERENCE+Path.GetFileName(aFile); 
      if (!File.Exists(referenceFilePath)) 
       continue; 
      using (StreamWriter sw = new StreamWriter(pathRefreshFile)) 
      { 
       sw.Write(referenceFilePath); 
      } 
     } 
    } 
} 

答えて

1

を作成するために使用するプログラムがある私はあなたが第三者いる.dllファイルを持っていることを仮定しています、クラスライブラリプロジェクトによって作成されたプロジェクトではなく、ソリューションに含めるだけでプロジェクト参照として追加することができます。ほとんどすべてのWebアプリケーションでMicrosoft Anti-Xssライブラリや他の一般的なサードパーティの.dllなどの項目と同様のシナリオがあります。

\ binディレクトリを除外する代わりに、* .dllを除外します。この方法で、.dllへの参照を追加すると、Visual Studioは.dllを\ binディレクトリに追加し、.dll.refreshファイルを\ binディレクトリに追加します。

That.Refreshファイルは、Visual Studioに.dllファイルをどこから取得するかを指示します。元の.dllがその場所にある限り、ビルドサーバーまたは新しい開発者のPCでビルドすることができます。

たとえば、ソースコントロールに\ shared \ commonDllsディレクトリがあり、ソースコントロールに.dllがチェックインされています。

他のすべてのアプリは、必要なときにこれらを参照します。これらがチェックインされている限り、ビルドサーバーがプロジェクトをビルドすると、\ shared \ commonDllsディレクトリに移動してそのDLLをコピーすることがわかります。

これにより、.dllファイルをアップロードして、アップグレードするときに数十種類の異なるWebアプリケーションにコピーする必要はありません。私たちはshared \ commonDllsディレクトリにコピーし(元のファイルを上書き)、チェックインして、すべてのWebアプリケーションが最新バージョンを使用しています。

編集 - 追加 - この答えにベアリングを持って、関連するトピックについての答えへのリンク:

SVN and binaries

How manage references in SVN/Visual Studio?

Best Practice: Collaborative Environment, Bin Directory, SVN

編集 - 追加 - 私たちのccnetからセクション。 .slnファイルを指す設定ファイル

これはおそらく必要ではありませんが、私のコメントの下にある.slnファイルをointingしていると言いましたので、私はそれを追加したいと思っていました。

<msbuild> 
     <description>DonationRequests</description> 
     <workingDirectory>D:\dev\svn\trunk\Intranet\DonationRequests</workingDirectory> 
     <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable> 
     <projectFile>DonationRequests.sln</projectFile> 
     <buildArgs>/p:Configuration=Debug /v:diag</buildArgs> 
     <timeout>900</timeout> 
     <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
</msbuild> 
+0

ここでの問題は、私はMSBuildのから構築していますので、.refreshファイルは我々が同様のMSBuildから構築している、と彼らは私たちのシステムで使用されている –

+0

使用されていないということです。 msbuildが.slnファイルを指していますか?実際には、私が間違っていない限り、Visual Studioのits'efでもmsbuildを使用していますか? – David

+0

はい、私は、リフレッシュファイルを試してみます –

関連する問題