0

ローカル マシンで Web アプリケーションをチェックアウトし、MSBuild でコンパイルしてから、aspnet_compiler でプリコンパイルしてデプロイしました。コマンドラインは次のようになります。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>aspnet_compiler.exe -v / -p C:\<Some Dir> -u C:\<Some Target Dir> -f

これは、テストではローカルで正常に機能します。つまり、.svn ディレクトリをコピーせずに、コンパイル済みの Web サイトがターゲット ディレクトリにコピーされます。ただし、CC.Net のビルドをスクリプト化したリモート マシンでは、.svn ディレクトリがコピーされます。aspnet_compiler に対してコマンド ラインを手動で実行すると、同じ結果が得られます (.svn フォルダーにコピーされます)。

D:\Program Files\Microsoft Visual Studio 10.0\VC>aspnet_compiler.exe -v / -p D:\<Some Dir> -u D:\<Some Target Dir> -f 

どちらの場合も、x86 VS ツール プロンプトから実行しています。なぜ異なる動作があるのか​​ わかりますか?

4

3 に答える 3

1

CCNet を使用している場合は、チェックアウトではなく、SVN エクスポートに通知することをお勧めします。それは問題を回避します。実際に統合ビルドを行うときは、ビルド ソースに VCS crud を含めないでください。

svn scm ブロックを実行するのではなく、CCNet で直接 svn コマンド ライン クライアントを呼び出す必要があります。

これは常に私を悩ませてきたので、今は TeamCity を使用しています (これで問題ありません)。

TortoiseSVN を使用すると、.svn フォルダーが非表示として作成されますが、CCNet が svn.exe を呼び出すと、フォルダーは非表示になりません。aspnet_compiler はそれに敏感だと思います。

于 2011-07-31T21:12:08.507 に答える
0

すべてのsvnファイルを削除するこのようなコードを公開できます

<Project
        xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"
        name = "AspNetPreCompile"
        DefaultTargets = "PrecompileWeb">
        <Target Name = "PrecompileWeb">
                <AspNetCompiler
                        VirtualPath = "DeployTemp" 
                        PhysicalPath = "Physical source path"
                        TargetPath = "Physical target path"
                        Force = "true"
                        Debug = "false"
                        Updateable = "true"/>
        </Target>
</Project>

または、このように使用して、すべてのsvnファイルを再帰的に削除できます

<Project
        xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"
        name = "AspNetPreCompile"
        DefaultTargets = "build">


    <ItemGroup>
        <FilesToCopy Include="C:\ProjectWorkingDirectories\YourWebsite\Source\**\*.*" Exclude="C:\ProjectWorkingDirectories\YourWebsite\Source\**\.svn\**"/>
    </ItemGroup>


    <Target Name = "build">
        <CallTarget Targets="PrecompileWeb"/>       
        <CallTarget Targets="CopyFiles"/>       
    </Target>


    <Target Name = "PrecompileWeb">
                <AspNetCompiler
                        VirtualPath = "/Source" 
                        PhysicalPath ="C:\ProjectWorkingDirectories\YourWebsite\Source"/>                     
        </Target>


    <Target Name = "CopyFiles">                
        <Copy SourceFiles="@(FilesToCopy)" DestinationFiles="@(FilesToCopy->'C:\TempProjectPublish\YourWebsite\YourWebsite\%(RecursiveDir)\%(Filename)%(Extension)')" ContinueOnError="true"/>
        </Target>

</Project>
于 2011-08-01T07:18:53.637 に答える
0

回答ありがとうございます。svnリポジトリ自体をnukeして再チェックアウトし、aspnet_compilerを実行して問題を解決できたことがわかりました。

于 2011-08-02T17:44:07.477 に答える