Visual Studioでは、 "web公開"機能を使用していくつかのweb.config変換を行い、WebAPIプロジェクトをサーバーに公開しています。公開はWeb配置を使用して行われます。
Visual Studio Codeを使用しているので、そのツールを失いました。しかし、Web配置を使用してプロジェクトを公開し続けたいと思います。 プロジェクトを公開するVSCodeタスクを作成する方法はありますか?
Visual Studio Publishは[target] .pubxmlファイルを使用します。 「staging.pubxml」と「production.xml」があります。これらはMSBuildファイルのように見えます。だから、多分それは単にコードからmsbuildタスクを実行することの問題です。ただし、どこから始めればよいかわかりません。
もう1つの考えは、Web配置コマンドラインツールを開始できるということです。私はそれを使ったことがないので、最初のアイデアの方がいいようです。
現在、最新のvscode(1.7.x)を使用していると仮定します。 Visual Studio CodeのTask Runnerを使用できます。
まず、<F1>
を押してタスクランナーを構成し、task
と入力する必要があります。 タスク:タスクランナーの構成を選択します。
新しいファイルtasks.json
は、vscodeによって次の内容で作成されます。
{
// See https://go.Microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": "$msCompile"
}
]
}
次に、新しい発行タスクを追加する必要があります。 @Roloによって与えられた答えを使用して、tasks
配列に新しいタスクを追加できます。
{
"taskName": "publish",
// Always show errors from builds.
"showOutput": "always",
"args": [
"/p:DeployOnBuild=true",
"/p:PublishProfile=Test"
]
}
3番目に、tasks.json
が完了すると、 publish
タスクを使用するには、Ctrl
+ P
(またはMacの場合はCmd
+ P
)を押し、task publish
。
Visual Studio Codeには、Visual Studioのような統合ビルドシステム(Web Publish)がありません。ただし、コマンドラインタスクが実行され、Gitが組み込まれています。
したがって、いくつかのオプションがあります。
1)タスクランナーを使用して、コマンドパレット(ctrl + p)からビルド/パブリッシュを開始します。 Grunt はプレビューで利用できます*。これには手動でスクリプトを作成する必要がありますが、それが完了すると、その時点からタスクを簡単に開始できます。
(更新: the docs Make、Ant、Gulp、Jake、Rake、MSBuildなど、互換性のある他のタスクランナーについて言及します。さらに、.settings tasks.jsonには、MSBuildファイルを機能させる方法の例があります。 Ctrl + Pキーを押します。「タスクの実行」、「タスクの構成」の順にクリックします)
2)継続的な統合のためにソース管理システムをセットアップして、更新を特定のブランチにプッシュするときに、MSBuild(または他のビルドシステム)スクリプトを実行してサーバーに公開するようにします。 Team Foundation Server(TFS)とGitを使用しています。プッシュを受け取ったときにビルドして公開するように設定された特定の「リリース/マスター」ブランチがあります。また、初期設定も必要ですが、完了すると自動的に行われます。 TFSがない場合は、TFSをオンラインで試してください。他にも多くのオプションがありますが、それを使用しています。
私はあなたがこれを理解しようとしているのと同じ立場にいます。あなたが見つけたものを知りたいです。
* Build 2015のディープダイブセッション によると、 tasks.jsonファイルを見ると、プレビューでGulpおよびMSBuildの例が使用できるように見えます。
MSBuildを使用して公開するには、次のコマンドを使用する必要があります。
msbuild <Project or Solution Path> /p:DeployOnBuild=true /p:PublishProfile=<Publish Profile Name>
ソリューションを指定すると、有効な発行プロファイルを含むすべてのプロジェクトが発行されます。
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=Test
次のような特定のプロジェクトを指すことができます。
msbuild <FullPath>\Project1\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=Test
どちらの場合も、.pubxmlファイルへの完全パスを使用するように指定することもできます。
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml
実際、*。pubxmlファイルはMSBuildスクリプトなので、他のMSBuildスクリプトと同じように操作できます。たとえば、次のようにコマンドラインからプロパティを置き換えることができます。
Test.pubxml
<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>C:\Deploy\MyProject\</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml /p:publishUrl:"D:\DifferentPath\DifferentFolder\"
これらのコマンドは、継続的インテグレーションサーバーまたはその他のビルドスクリプトから使用できます。
追加情報: