为什么visual studio 2017和azure devops在.net core 2.1中的发布输出存在差异?
当尝试将我的.net core mvc应用程序发布到文件夹时,它是IIS友好的,而当我尝试在azure devops管道中发布相同的源时,它会创建几乎数百个不支持IIS的文件。为什么两者不同,或者我需要做什么才能让azure publish以与visual Studio相同的方式工作 已通过azure疑难解答,但未发现它对解决此问题有用 在下面添加azure-pipeline.yml内容为什么visual studio 2017和azure devops在.net core 2.1中的发布输出存在差异?,.net,.net-core,visual-studio-2017,azure-devops,azure-pipelines-build-task,.net,.net Core,Visual Studio 2017,Azure Devops,Azure Pipelines Build Task,当尝试将我的.net core mvc应用程序发布到文件夹时,它是IIS友好的,而当我尝试在azure devops管道中发布相同的源时,它会创建几乎数百个不支持IIS的文件。为什么两者不同,或者我需要做什么才能让azure publish以与visual Studio相同的方式工作 已通过azure疑难解答,但未发现它对解决此问题有用 在下面添加azure-pipeline.yml内容 trigger: - dev pool: vmImage: 'Ubun
trigger:
- dev
pool:
vmImage: 'Ubuntu-16.04'
variables:
buildConfiguration: 'Release'
a: dotnet --version
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
- bash: echo $(a)
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'Vinocopia_Redesign'
- task: FtpUpload@1
inputs:
credentialsOption: 'inputs'
serverUrl: 'ftp://xx.xx.xx.xx'# Required when credentialsOption == Inputs
username: 'username'# Required when credentialsOption == Inputs
password: 'pwd'# Required when credentialsOption == Inputs
rootDirectory:
filePatterns: '**'
remoteDirectory: '/upload/$(Build.BuildId)/'
#clean: false
#cleanContents: false # Required when clean == False
overwrite: false
#preservePaths: false
#trustSSL: false
为什么visual studio 2017和azure devops在.net core 2.1中的发布输出存在差异
正如D.J所指出的:
“dotnet发布”和“vs发布”是不同的发布方法
如果希望获得与从Visual Studio publish获得的结果相同的结果,则应使用Visual Studio/MSBuild publish而不是dotnet publish,因此我们需要使用Visual Studio build
使用如下所示的MSBuild参数:
- task: VSBuild@1
displayName: 'Build solution'
inputs:
solution: NetCoreMVC/NetCoreMVC.sln
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:publishUrl="$(Build.ArtifactStagingDirectory)\\"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
希望这能有所帮助。您只是说了不同,但没有提供任何迹象表明它们不同,您是如何在Azure devops中发布的?你的问题太宽泛,无法回答。因此,请提供关于生成/发布任务的不同输出和生成定义。这将有助于我们找到这种不同的原因。/但您没有提供任何迹象表明它们是不同的。/。。。文件计数和IIS友好(当我们将IIS应用程序指向已发布文件夹时,它适用于vs publish,而azure devops publish不适用)。将添加azure-pipeline.yml代码here@ArulManivannan没有“azure devops发布”,只有“dotnet发布”;)是的,“dotnet发布”和“vs发布”是不同的发布方法,所以请不要试图比较它们。。。在devops中使用“vs publish”-方法,或者尝试让“dotnet publish”-方法按预期在本地运行,以便您可以更新yaml中的“dotnet publish”-步骤“vs publish”将是命令行任务中的“msbuild xxx.sln/p:deployonbuild=true”,并具有其他属性,但这要由您自己决定,谢谢指定。我需要用vs publish替换dotnet publish吗?如果这样做,我将收到一个错误无效命令。@ArulManivannan,是的,您需要替换它。