我的 msbuild 参数可能做错了什么?

Dar*_*apo 4 msbuild

我有一个 msbuild 论点

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

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

我收到一个错误提示

代理作业 1:“Code\AnotherMutliProjSolution.sln(0,0):错误 MSB4014:由于内部故障,构建意外停止。System.ArgumentException:名称“Project.HQ.Web”包含无效字符“.”。在 Microsoft.Build.Shared.ErrorUtilities.ThrowArgument(Exception innerException, String resourceName, Object[] args) 在 Microsoft.Build.Construction.ProjectTargetElement.set_Name(String value) 在 Microsoft.Build.Construction.ProjectTargetElement.CreateDisconnected(String name, ProjectRootElement containsProject) at Microsoft.Build.Execution.ProjectTargetInstance.ToProjectTargetElement(ProjectRootElement rootElement) at Microsoft.Build.Execution.ProjectInstance.ToProjectRootElement() at Microsoft.Build.Construction.SolutionProjectGenerator。CreateSolutionProject(String wrapperProjectToolsVersion, Boolean explicitToolsVersionSpecified) at Microsoft.Build.Construction.SolutionProjectGenerator.Generate() at Microsoft.Build.Execution.ProjectInstance.GenerateSolutionWrapper(String projectFile, IDictionary)2 globalProperties, String toolsVersion, ILoggingService loggingService, BuildEventContext projectBuildEventContext, IReadOnlyCollection1 targetNames, ISdkResolverService sdkResolverService, Int32 submitId) 在 Microsoft.Build.Execution.ProjectInstance.LoadSolutionForBuild(String projectFile, PropertyDictionary 1 globalPropertiesInstances, String toolsVersion, BuildParameters buildParameters, ILoggingService loggingService, BuildEventContext projectBuildEventContext, Boolean isExplicitlyLoaded, IReadOnlyCollection1 targetNames, ISdkResolverService sdkResolverService, Int32 submitId) 在 Microsoft.Build.Execution.BuildManager.LoadSolution requestInto,BuildRequestConfiguration(BuildRequestConfigurationRequestInto)在 Microsoft.Build.Execution.BuildManager.HandleNewRequest(Int32 node, BuildRequestBlocker blocker) at Microsoft.Build.Execution.BuildManager.IssueRequestToScheduler(BuildSubmission submit, Boolean allowMainThreadBuild, BuildRequestBlocker blocker)"评论

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

Mar*_*ich 8

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

msbuild /t:Project_HQ_Web
Run Code Online (Sandbox Code Playgroud)

请参阅如何:使用 MSBuild.exe 在解决方案中构建特定目标的以下部分

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


Dar*_*apo 0

我终于弄明白了。我所做的不是构建解决方案,而是构建了 csproj 文件本身并传入 msbuild 参数

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(build.stagingDirectory)\\ProjectHQWeb
Run Code Online (Sandbox Code Playgroud)