我有一个 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, PropertyDictionary1 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”。我仍然遇到同样的问题。
您需要.用下划线替换以构建生成的解决方案目标:
msbuild /t:Project_HQ_Web
Run Code Online (Sandbox Code Playgroud)
请参阅如何:使用 MSBuild.exe 在解决方案中构建特定目标的以下部分
在 -target: 开关后指定目标,格式为
<ProjectName>:<TargetName>。如果项目名称包含任何字符 %、$、@、;、.、(、) 或 ',请将它们替换为指定目标名称中的 _。
我终于弄明白了。我所做的不是构建解决方案,而是构建了 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)