我正在尝试使用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真的不方便和友好。
答案 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发布方法将文件复制到正确的目录。