web-dev-qa-db-ja.com

VS2010 Web Publishコマンドラインバージョンのファイルシステムの展開

フォーク、

簡単に言えば、このダイアログを複製したいと思います。 alt text

これはVisual Studio 2010 ASP.Net MVCプロジェクトです。このコマンドを実行すると、変換されたweb.configsを含め、必要なすべてのファイルが「C:\ ToDeploy」ディレクトリにあります。

これをコマンドラインで複製して、QA環境の構築に使用できるようにしたいと考えています。

リモートデプロイのコマンドラインでこれを行う方法に関するさまざまな記事を見てきましたが、ファイルシステムのデプロイでそれを実行したいだけです。

NAntタスクまたはrakeスクリプトを使用してこの機能を複製できることはわかっていますが、このメカニズムを使用して実行したいので、繰り返しはしません。

私はこれをもう少し調査しました、そして私はこれらのリンクを見つけました、しかしそれらのどれもそれをきれいに解決しません:

前もって感謝します!

45
CubanX

はい、ようやくこれを理解しました。

必要なコマンドラインは次のとおりです。

msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False

/ p:セクションにoutdir=c:\wherever\のプロパティを追加することで、プロジェクトの出力先を変更できます。

これにより、次の場所に出力が作成されます。

path/to/your/webdirectory/obj/Debug/Package/PackageTmp/

次に、任意の方法を使用して、上記のディレクトリからこれらのファイルをコピーできます。

私はこれをすべてRuby rake task using Albacore 。ただし、その前にコードが必要な場合は、お知らせください。

私が見つけたもう1つのしわは、それがトークン化されたパラメーターをWeb.configに入れていることでした。その機能が必要ない場合は、必ず追加してください:

/p:AutoParameterizationWebConfigConnectionStrings=false
46
CubanX

私が見つけた別のソリューションを投稿するつもりだったので、このソリューションを更新してログファイルを含めました。

これは コマンドラインからWebアプリケーションを公開する に似ていますが、ログファイルをクリーンアップして追加しただけです。元のソースも確認してください http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

WebアプリケーションプロジェクトのルートにMSBuild_publish_site.batを作成します(任意の名前を付けます)

set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
set destPath=C:\Publish\MyWebBasedApp\

:: clear existing publish folder
RD /S /Q "%destPath%"

call %msBuildDir%\msbuild.exe  MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log

set msBuildDir=
set destPath=

<Import Project=タグの下に次のxmlを追加して、WebアプリケーションプロジェクトファイルMyWebBasedApp.csprojを更新します

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" />

    <ItemGroup>
        <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="True" />
</Target>

これは他のソリューションよりも私にとってはうまく機能します。

詳細については、以下を確認してください。

1) http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

2) コマンドラインからWebアプリケーションを発行する

3) コマンドラインからVisual Studioプロジェクトをビルド

11
zulucoda

[〜#〜] ccnet [〜#〜]Web.config変換の私の解決策:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
        <projectFile>GertakariakMSWeb2.vbproj</projectFile>
        <targets>Build</targets>
        <timeout>600</timeout>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
        <buildArgs>
            /noconsolelogger /p:Configuration=Release /v:diag
            /p:DeployOnBuild=true
            /p:AutoParameterizationWebConfigConnectionStrings=false
            /p:DeployTarget=Package
            /p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
        </buildArgs>
        </msbuild>
</tasks>
1
Asier

VS2012以降では、msbuild 12.0で既存の プロジェクトのパブリッシュプロファイル を参照できます。これは、右クリックしてパブリッシュすることと同じです...パブリッシュプロファイルを選択します(この例では「MyProfile」) ):

msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"
1
bubbassauro

Visual Studio 2012のソリューションがあります: https://stackoverflow.com/a/15387814/2164198

ただし、Visual Studioがインストールされていなくても機能します。 ([〜#〜] update [〜#〜]を参照))。 Webインストール用にVisual Studio Express 2012から必要なものをすべて入手できるかどうかはまだ確認していません。

0
Ivan Samygin