web-dev-qa-db-ja.com

コマンドラインからVS2008「Webサイトの公開」を複製する

Visual Studio 2008でこのダイアログの正確な機能をビルドスクリプトで複製しようとしています: alt text

これはASP.NETWebサイトであり、Webアプリケーションではありません。

私はこれをグーグルで調べて、MSBuildに関連するものをかなり見つけましたが、これはすべてASP.NETWebアプリケーションとしてレイアウトされたソリューションに関係しているようです。

http://www.driebier.net/post/Using-MSBuild-to-deploy-visual-studio-2005-web-applications.aspxhttp://blog.donnfelker。 com/post/TFS-Build-Not-Publishing-Web-Applications.aspx

この記事 ASP.NET Webサイトに関連しているようですが、これらの提案を使用してビルドしようとするとエラーが発生することがわかりました。

 C:\ dev\T&A> msbuild/t:_CopyWebApplication/property:OutDir = c:\ temp\taweb\/prope
rty:WebProjectOutputDir = c:\ temp\taweb\
 
 Microsoft(R)BuildEngineバージョン3.5.30729.1 
 [Microsoft .NET Framework、バージョン2.0.50727.3074] 
著作権(C)Microsoft Corporation 2007.無断複写・転載を禁じます。 
 
ビルドが開始されました22/04/200911:50:42。
ノード0のプロジェクト "C:\ dev\T&A\TAWeb.sln"(_ CopyWebApplication target(s) )。
ビルドソリューション構成 "Debug | .NET"。
 C:\ dev\T&A\TAWeb.sln:エラーMSB4057:ターゲット "_CopyWebApplication"は
に存在しませんプロジェクト。
 DoneBuilding Project "C:\ dev\T&A\TAWeb.sln"(_ CopyWebApplication target(s))-
 FAILED。
 
 
 BuildFAILED。
 
 "C:\ dev\T&A\TAWeb.sln"(_ CopyWebApplication target)(1)-> 
 C:\ dev\T&A\TAWeb.sln:エラーMSB4057:ターゲット "_CopyWebApplication"はプロジェクトに存在しません
 
 0警告
 [.__ __。] 1エラー
 
経過時間00:00:00.06 

公開しようとしているソリューション(自分のものではなく継承)に.csprojファイルがありません(C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v9.0 \から_CopyWebApplicationターゲットをインポートできます)。 WebApplications\Microsoft.WebApplication.targets)

おそらくこれはVisualStudio 2005/2008の違いですか?

とにかく、私はそこに間違った道を進んでいるように感じます。

基本的に、上記のダイアログが行うことを正確に達成する必要がありますが、コマンドラインからです。

どうもありがとう

36
tomfanning

次のコマンドは、デフォルト設定でWebサイトの公開ダイアログを複製します。

デフォルト設定でWebサイトを公開するためのコマンド

aspnet_compiler -nologo -v / -p "C:\WebSite1" -u "C:\TargetPath"

参照

1)コミュニティコンテンツタイトルサイトを公開したいが、VisualStudioを持っていない... at http://msdn.Microsoft.com/ en-us/library/20yh9f1b(classic).aspx

  • Microsoft Visual Studio 2005> Visual Studio2005コマンドプロンプト
  • Microsoft Visual Studio 2008> Visual Studio2008コマンドプロンプト
  • Microsoft .NET Framework SDK v2.0> SDKコマンドプロンプト

2) http://msdn.Microsoft.com/en-us/library/ms229863.aspx の「ASP.NETコンパイルツール(Aspnet_compiler.exe)」を参照してください。

3)ウォークスルー:XCOPYを使用したASP.NETWebアプリケーションの展開からの抜粋に続く http://msdn.Microsoft.com/en-us/library/f735abw9.aspx

.NET FrameworkのすべてのバージョンでサポートされているXCOPYコマンドラインツールを使用する代わりに、%SystemRoot%\ Microsoft.NET\Framework\にある新しい.NETFramework2.0ツールを使用できます。バージョン2以降\Aspnet_compiler.exeを使用して、Webアプリケーションをコンパイルおよびデプロイします。詳細については、 ASP.NETコンパイルツール(Aspnet_compiler.exe) を参照してください。

4)次の抜粋方法:展開用にASP.NETWebサイトをプリコンパイルする at http://msdn.Microsoft.com/en-us/library/ms227976.aspx

Webサイトがインターネットインフォメーションサービス(IIS)アプリケーションではないため、IISメタベース)にエントリがない場合は、-vスイッチに次の値を使用します。

aspnet_compiler -p physicalOrRelativePath -v / targetPath

この場合、physicalOrRelativePathパラメーターは、Webサイトファイルが配置されている完全修飾ディレクトリパス、または現在のディレクトリからの相対パスを参照します。ピリオド(。)演算子は、physicalOrRelativePathパラメーターで使用できます。 -vスイッチは、コンパイラーがアプリケーションのルート参照を解決するために使用するルートを指定します(たとえば、チルダ(〜)演算子を使用)。 -vスイッチに/の値を指定すると、コンパイラーは物理パスをルートとして使用してパスを解決します。

38
AMissico

AspNetCompiler タスクを探していると思います

<Target Name="PublishToIIS" DependsOnTargets="Publish">
    <AspNetCompiler    
            VirtualPath="$(IISVirtualPath)"
            TargetPath="$(IISTargetPath)"
            PhysicalPath="$(MSBuildProjectDirectory)/trunk/InternalAppCS/Web.UI/"
            Force="true"
            Debug="$(IISDebug)"
     />

</Target>
6
slf

この「魔法の」組み合わせは、あなたが探していることを行います。 )私のプロジェクトに適切な組み合わせを取得するのに2日しかかかりませんでした。)重要なのは、_CopyWebApplicationターゲットとResolveReferencesターゲットを含めることです。

msbuild "/t:_CopyWebApplication;ResolveReferences;publish" /p:OutDir="C:\inetpub\wwwroot\[appname]\bin\" /p:WebProjectOutputDir="C:\inetpub\wwwroot\[appname]" c:\directory\[appname].csproj    
6
Brad Bruce

.csprojファイルに追加します。

<Target Name="AfterBuild">
<Message Text="Copying to Deployment Dir:" />
<Copy SourceFiles="@(Content)" DestinationFolder="..\PreCompiledWeb\%(Content.RelativeDir)" />
<CreateItem Include="$(OutputPath)\*">
    <Output TaskParameter="Include" ItemName="Binaries"/>
</CreateItem>
<Copy SourceFiles="@(Binaries)" DestinationFolder="..\PreCompiledWeb\bin" />

公開するフォルダーの「..\PreCompiledWeb」を変更するか、次のような変数を指定できます:$(OutputFolder)渡すことができます

次に、Webアプリケーションのフォルダーに移動して、次の操作を行います。

msbuild /t:Build

次に、xcopyを使用して、これらのファイルを好きな場所にコピーできます。

xcopy "..\PreCompiledWeb\*.*" "C:\MySite\" /e

それはそれをする必要があります。

5
davidcanar

個人的には、コマンドを実行するbuildbotを使用しているので、アップロードを実行するVBSスクリプトを作成する必要がありました。

WinSCP をインストールしてftp作業を行い、アップロードのスクリプトを作成しました。

Set WshShell = CreateObject("WScript.Shell")
sCmd1 = """C:\Program Files\WinSCP\winscp.com"" <myusername> /command ""option batch on"" ""option confirm off"" ""put " & DefaultPath & strResult & "\" & DefaultFileName & " /Usr/<myuser>/" & updateType & "/" & strResult & "/"" ""exit"""

コマンドラインからWebサイトをプリコンパイルするには、次のようにしますが、アップロードする前ではなく、Webサーバーでこれを行います。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -p "D:\<mycompany>\Backedup\Web Sites\<mysite\Root" -v /
4
Phil Hannent

私はあなたが説明するとおりにmsbuildを使用しています。このようにプロパティを設定してみましたか?

 /property:"OutDir=c:\temp\taweb\;WebProjectOutputDir=c:\temp\taweb\"

それでも機能しない場合は、お知らせください。msbuildスクリプトを開始し、svn getを実行し、Assembly.infoファイルをビルドし、Webサイトをデプロイし、最後にhttpgetを実行するbatファイルを送信します。サイトのホームページで、正しくビルドおよびデプロイされていることを確認します。

それがリハンに役立つことを願っています

4
Rihan Meij

同じエラーで苦労していました(MSB4057:ターゲット "_CopyWebApplication"がプロジェクトに存在しません。

はい。私は(Webサイトではなく)Webアプリケーションプロジェクトを使用していました。

うまくいったプロジェクトとうまくいかなかったプロジェクトがあったので、私は困惑しました。そこで、ExamDiffProに腰を下ろし、プロジェクトファイルの比較に取り掛かりました。私が見つけたのは、プロジェクトファイルの下部にあるビルドターゲットのセクションが異なっていたことです。

1つのプロジェクト(機能していた)は、新しいバージョンのVisualStudioを使用して作成されました。もう1つ(機能していなかった)は数年前に作成され、何年にもわたってアップグレードされ、現在使用しているバージョンになりました。アップグレードされたプロジェクトは、Visual Studioの新しいバージョンが利用可能になったため、新しいビルドターゲットでアップグレードされなかったようです。

動作していたプロジェクトファイルの下部に、次のことがわかりました。

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" />

2番目のインポートラインは、問題を引き起こしていたプロジェクトにありませんでした。

インポートを作業ファイルからコピーし、非作業ファイルの相対的な場所に貼り付けただけです。

これはこのスレッドで定義された最初の問題の直接的な解決策ではありませんが、実際のWebアプリケーションプロジェクトでのみ、このスレッドに出くわして同様の問題を探している他の人々の助けになることを願っています。

4
Todd W. Powers

これは、ソリューションを構築し、そこからWebプロジェクトを公開する小さなPowerShellスクリプトです。

MSBuildは.Net3.5用であるため、必要に応じて「\ v4.0 \」に変更してください。

$build = "$env:windir\Microsoft.NET\Framework\v3.5\MSBuild.exe"

$SolutionPath = "C:\Projects\AdminWebSite"
$SolutionFile = "AdminWebSite.sln"
$WebProjectFile = "Admin.Web\Admin.Web.csproj"
$OutputPath = "C:\PublishedSites\Hosts\adminweb"

& $build "$SolutionPath\$SolutionFile" /t:rebuild
& $build "$SolutionPath\$WebProjectFile" "/t:ResolveReferences;_CopyWebApplication;publish" /p:OutDir="$OutputPath\bin\" /p:WebProjectOutputDir="$OutputPath"

"ResolveReferences" must "_CopyWebApplication"の前に来ると、依存関係が失われます。

ここに示されているパスの例は、次のように構築されています。

  • C:\ Project\AdminWebSite\AdminWebSite.sln
  • C:\ Project\AdminWebSite\Admin.Web\Admin.Web.csproj
3
Iain Ballard

受け取ったエラー(C:\ dev\T&A\TAWeb.sln:エラーMSB4057:ターゲット "_CopyWebApplication"がプロジェクトに存在しません)は、2つの問題が原因です。まず、ターゲットの_CopyWebApplicationは、ソリューションではなく、WebApplicationプロジェクトファイルで呼び出す必要があります。 2番目:Webサイトにはプロジェクトファイルがなく、WebApplicationsにはプロジェクトファイルがあります。

_CopyWebApplicationターゲットは、WebApplicationプロジェクトの公開にのみ適用されます。 AspNetCompilerを使用するWebサイトを公開するには、MSBuildタスクを使用する必要があります。

Visual Studio 2008でWebサイトを公開すると、出力の2行目は「Webサイトのプリコンパイル」です。 AspNetCompiler および Aspnet_compiler.exe のオプションに直接Webサイトマップを公開するために表示されるオプションのビジュアルスタジオ。

ここで「AspNet_compilerを使用する」と言ったのは私が最初ではありませんが、その理由を説明することが役立つと思いました。ちなみに、AspNet_compilerを使用してWebアプリを公開できると思いますが、さらにテストを行う必要があります。

2
mcdon

私は、msbuild.exe(.net 3.5、vs 2008)を使用してbatファイルを使用して、自分のWebサイト(vbproj)をフォルダーに「公開」します。

%msBuildDir%\ msbuild "D:\ Project1\Client\WebPresentation\ConsultaOperaciones.vbproj"/t:ResolveReferences; Rebuild/p:BuildingProject = true; OutDir = D:\ Instalaciones\ultima\PublicacionWeb\OutDir \; WebProjectOutputDir = D:\Instalaciones\ultima\PublicacionWeb\WebProjectDir \

1
Kiquenet