我的msbuild参数可能出什么问题?

时间:2019-05-22 09:32:01

标签: msbuild

我有一个msbuild参数

/t:Project.HQ.Web /p:DeployOnBuild=true /p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.artifactstagingdirectory)\\"

在我的Azure DevOps构建管道中用于解决方案构建。

我看到一条错误消息

  

代理作业1:“代码\ AnotherMutliProjSolution.sln(0,0):错误MSB4014:   由于内部故障,构建意外停止。   System.ArgumentException:名称“ Project.HQ.Web”包含一个   无效字符 ”。”。在   Microsoft.Build.Shared.ErrorUtilities.ThrowArgument(Exception   innerException,字符串resourceName,Object [] args)位于   Microsoft.Build.Construction.ProjectTargetElement.set_Name(String   价值)   Microsoft.Build.Construction.ProjectTargetElement.CreateDisconnected(String   名称,ProjectRootElement containsProject)位于   Microsoft.Build.Execution.ProjectTargetInstance.ToProjectTargetElement(ProjectRootElement   rootElement)   Microsoft.Build.Execution.ProjectInstance.ToProjectRootElement()在   Microsoft.Build.Construction.SolutionProjectGenerator.CreateSolutionProject(String   wrapperProjectToolsVersion,布尔值explicitToolsVersionSpecified),位于   Microsoft.Build.Construction.SolutionProjectGenerator.Generate()在   Microsoft.Build.Execution.ProjectInstance.GenerateSolutionWrapper(String   projectFile,IDictionary 2 globalProperties, String toolsVersion, ILoggingService loggingService, BuildEventContext projectBuildEventContext, IReadOnlyCollection 1个targetNames,   ISdkResolverService sdkResolverService,位于Int32提交ID)   Microsoft.Build.Execution.ProjectInstance.LoadSolutionForBuild(字符串   projectFile,PropertyDictionary 1 globalPropertiesInstances, String toolsVersion, BuildParameters buildParameters, ILoggingService loggingService, BuildEventContext projectBuildEventContext, Boolean isExplicitlyLoaded, IReadOnlyCollection 1个targetNames,   ISdkResolverService sdkResolverService,位于Int32提交ID)   Microsoft.Build.Execution.BuildManager.LoadSolutionIntoConfiguration(BuildRequestConfiguration   配置,BuildRequest请求)   Microsoft.Build.Execution.BuildManager.HandleNewRequest(Int32节点,   BuildRequestBlocker阻止程序)   Microsoft.Build.Execution.BuildManager.IssueRequestToScheduler(BuildSubmission   提交,布尔allowMainThreadBuild,BuildRequestBlocker   拦截器)”评论

我尝试将目标设置为“ Project.HQ.Web”和“ Project.HQ.Web”。我仍然遇到相同的问题。

3 个答案:

答案 0 :(得分:2)

From the documentation/t用于构建项目目标。项目本身没有任何开关。

您必须用作命令行:

msbuild.exe /p:DeployOnBuild=true /p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.artifactstagingdirectory)\\" "Project.HQ.Web"

答案 1 :(得分:1)

您需要用下划线替换.才能生成生成的解决方案目标:

msbuild /t:Project_HQ_Web

请参阅How to: Build specific targets in solutions by using MSBuild.exe的以下部分

  

在-target:开关之后指定目标,格式为   <ProjectName>:<TargetName>。如果项目名称包含任何   %,$,@,;,。,(,)或'字符,请在   指定的目标名称。

答案 2 :(得分:0)

我终于明白了。 我所做的不是建立解决方案, 我通过传递msbuild参数构建了csproj文件本身

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(build.stagingDirectory)\\ProjectHQWeb