在Visual Studio中,我使用“发布Web”功能执行一些web.config转换,并将WebAPI项目发布到我们的服务器。使用Web Deploy完成发布。
现在我正在使用Visual Studio Code,我已经失去了那个工具。但是,我想继续使用Web Deploy发布项目。 有没有办法编写将发布我的项目的VSCode任务?
Visual Studio Publish使用[target] .pubxml文件。我有“staging.pubxml”和“production.xml”。这些看起来像MSBuild文件。所以,也许这只是从Code执行msbuild任务的问题。但不知道从哪里开始。
另一个想法是我可以启动Web Deploy命令行工具。我从来没有用过,似乎第一个想法会更好。
答案 0 :(得分:9)
假设您正在使用最新的vscode(1.7.x)。您可以使用Visual Studio Code的Task Runner。
首先,您需要按<F1>
配置任务运行器并输入task
。选择任务:配置任务运行器。
vscode将创建一个新文件tasks.json
,其中包含以下内容。
{
// 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"
]
}
第三,tasks.json
完成后。您可以按publish
+ Ctrl
(或Mac上的P
+ Cmd
)来使用P
任务,然后输入task publish
。
答案 1 :(得分:3)
要使用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\"
您可以使用持续集成服务器或任何其他构建脚本中的这些命令。
其他信息:
答案 2 :(得分:0)
您可以使用 dotnet publish
命令将其部署到本地或远程目录。
本地目录
dotnet publish -c Release -o ./publish
对于远程目录
dotnet publish -c release -p:PublishDir=//serverName/d$/inetpub/wwwroot/appName
dotnet publish
在幕后调用 MSBuild。
-c configName
=> 定义构建配置。
-o dirName
=> 指定输出目录。
-p:PublishDir
=> 指定复制输出目录的目录
要了解 dotnet publish
命令,请访问 link。
您也可以使用命令行在 VS Code 中使用 publish profile。