Webサイト(Webアプリケーションではない)があり、毎晩同じディレクトリにあるコマンドプロンプトから公開したい。
TeamCity、TFS、またはNantなどのサードパーティツールのようなビルド自動化ツールを使用したくない-MSBuild
を使用して実行する必要があります。これどうやってするの?
更新: [公開]ウィンドウでチェックする必要があるオプションはUse Fixed naming and single page assemblies
。
コメントから、WebプロジェクトはWebアプリケーションプロジェクトではなくWebサイトプロジェクトです。
この場合、「公開」ターゲットをオプションにすることはできませんが、「AspNetCompiler」がソリューションです。
以下のコンテンツでxmlファイルを作成し、MSBuildから呼び出します。
<Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<Target Name="PrecompileWeb">
<AspNetCompiler
VirtualPath="/MyWebSite"
PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
TargetPath="c:\precompiledweb\MyWebSite\"
Force="true"
Debug="true"
FixedNames="True"
/>
</Target>
</Project>
このタスクへの参照は here であり、すべてのun/checkオプションを構成できます。
FixedName = "True"は、「固定命名と単一ページを使用...」オプションのチェックに相当します。
次に、ソリューションファイルではなく、MSBuildからこのファイルを呼び出します。
MSBuild your.xml /p:Configuration=<Debug/Release>
クラスライブラリがWebサイトプロジェクトによって参照されている限り、それらは一緒にビルドされます。
MSBuild.exe **MYPROJ**.sln
/p:outdir="Z:\output\\",OutputPath="Z:\output\\",webprojectoutputdir="Z:\output\\",configuration=RELEASE
/t:Clean;Build
/flp1:logfile=Z:\output\\\Log_msbuild.log;verbosity=detailed
/flp2:logfile=Z:\output\\\Log_warnings.log;warningsonly;verbosity=detailed
/flp3:logfile=Z:\output\\\Log_errors.log;errorsonly;verbosity=detailed
/nologo
/noconlog
これは、すべてのタイプのプロジェクト(Web、webservice、desktop、..)をコンパイルでき、(buildlog、error、warnings)としてログファイルを作成できます。
返信が遅くなってすみません、そして入力アランに感謝します。残念ながらあなたの提案は機能しなかったので、私は次のことをしました。
This build does not copy output files to a drop folder
_]を選択しますOutput location
_の下の_2. Build
_の値としてAsConfigured
を選択します。このMSBuild引数文字列を使用します。
_/p:DeployOnBuild=True;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\192.168.x.x\Nightly\MainBranch";AutoParameterizationWebConfigConnectionStrings=false
_
この結果は、テストサイトのwebrootとして使用する次のフォルダーです:_\\192.168.x.x\Nightly\MainBranch\PackageTmp
_。 PackageTmp
フォルダーを持たないことを好むため、これは明らかに最適ではありません。また、同じソリューションに複数のWebアプリケーションが存在する場合の動作もテストしていませんが、この問題にこれ以上時間をかけることはできません。
なぜマイクロソフトがこのような単純なタスクをそれほど複雑にしたのか、私には本当にわかりません。