MSBuild不会部署并且不会打印错误

时间:2017-12-22 19:09:50

标签: msbuild .net-core

我正在尝试使用MSBuild发布我的项目。这是命令:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" D:\HamrahFarda\KhandeShow\KhandeShow.sln /t:UserService /p:DeployOnBuild=true /p:PublishProfile=DeployUserService /p:SolutionDir=D:\HamrahFarda\KhandeShow /property:PublishFolder=C:\Publish\KhandeShow\UserService

完整的命令可以分解为这些部分:

我使用随VS 2017社区版安装的用于.NET Core的MSBuild.exe。

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"

我有一个解决方案,我只想在其中构建和发布项目。因此:

D:\HamrahFarda\KhandeShow\KhandeShow.sln /t:UserService

我希望它部署已构建的项目:

/p:DeployOnBuild=true 

我事先创建了一个发布配置文件:

/p:PublishProfile=DeployUserService

这是发布资料:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PublishProtocol>FileSystem</PublishProtocol>
    <Configuration>Release</Configuration>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PublishDir>C:\Publish\KhandeShow\UserService</PublishDir>
  </PropertyGroup>
</Project>

最后但并非最不重要的是,我正在覆盖一些属性,并提供在.csproj内使用的新属性:

/p:SolutionDir=D:\HamrahFarda\KhandeShow /property:PublishFolder=C:\Publish\KhandeShow\UserService

但没有任何错误(带有一堆警告),它不会向目标文件夹发布任何内容。我被卡住了。你能帮忙吗,因为MSBuild真的不方便和友好。

1 个答案:

答案 0 :(得分:2)

从您发布的日志中我可以确定以下内容:

您尝试通过Web发布方法发布的项目不是Web项目。

UserService.csproj定义为

<property name="prefix" value="/" />

这是&#34;正常&#34; sdk风格的.NET项目。如果要执行这些项目的文件系统发布,请改用<Project Sdk="Microsoft.NET.Sdk"> 或其msbuld等效dotnet publish

如果项目确实是一个Web项目,您应该将其更改为

msbuild /t:Publish

获取网络工具和发布支持。

更新:还请注意,发布配置文件中的<Project Sdk="Microsoft.NET.Sdk.Web"> 不是要在发布配置文件中设置的正确变量。请改用PublishDir,以便FileSystem发布方法将文件复制到正确的目录。