45

皆さん、

一言で言えば、私はこのダイアログを複製したいと思います: 代替テキスト

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

これをコマンドラインで複製して、QA環境のビルドに使用できるようにします。

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

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

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

前もって感謝します!

4

6 に答える 6

46

さて、ついにこれを理解しました。

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

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

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

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

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

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

私はこれをすべてAlbacoreを使用したルビーレーキタスクとして機能させています。私はそれをすべてやり遂げようとしているので、実際にプロジェクトへの貢献としてそれを置くことができます。しかし、その前に誰かがコードを欲しがっているなら、私に知らせてください。

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

/p:AutoParameterizationWebConfigConnectionStrings=false
于 2010-10-28T13:27:17.753 に答える
11

見つけた別の解決策を投稿しようと思ったので、この解決策を更新してログファイルを含めました。

これは、コマンドラインから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)コマンドラインからVisualStudioプロジェクトをビルドします

于 2011-12-20T11:17:04.570 に答える
1

Web.config変換を使用したCCNETのソリューション:

<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>
于 2013-05-08T08:36:53.650 に答える
1

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

msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"
于 2014-09-26T19:58:52.230 に答える
0

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

ただし、VisualStudioがまったくインストールされていない場合でも機能します。(UPDATEを参照)。Webインストール用にVisualStudioExpress2012から必要なものをすべて入手できるかどうかはまだ確認していません。

于 2013-03-15T05:28:07.873 に答える
-1

CubanXからインスピレーションを得た完全なmsbuildファイル

    <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Publish">
        <RemoveDir Directories="..\build\Release\Web\"
                     ContinueOnError="true" />        
       <MSBuild Projects="TheWebSite.csproj"
                Targets="ResolveReferences;_CopyWebApplication"
                Properties="Configuration=Release;WebProjectOutputDir=..\build\Release\Web;OutDir=..\build\Release\Web\bin\"
        />  
    </Target>
    <Target
        Name="Build"
        DependsOnTargets="Publish;">
    </Target>   
</Project>

これにより、公開されたWebサイトがWeb .. \ build\Releaseフォルダーに配置されます。

于 2012-09-12T11:31:31.230 に答える