Azure pipelines VS 2019构建后命令和;Azure管道冲突
类似的问题,在我的情况下不起作用。我在每个项目的后期构建中使用的xcopy命令在Azure管道中不起作用,构建失败。如果不完成此操作,我就无法发布到暂存。所以基本上我被卡住了 我的源代码结构如下面的屏幕截图所示 如您所见,插件项目位于/Modules文件夹中。在VS中,我在/Modules中的每个插件项目中都有构建后xcopy命令,用于将所需文件(如wwwroot、视图等)复制到宿主项目/Modules文件夹。所以在VS中,一旦一切都完成并部署完毕;文件夹结构如下所示 在这里,您可以看到插件数据被复制到宿主项目内的[Modules]文件夹中。这些将被复制为\Modules[插件名称] 但是在Azure中,这个xcopy无法工作,我无法使复制文件任务正常工作。基本上,应该有一些东西可以在本地和azure管道上完成这项工作,而不必维护两件事(对于本地和管道) 更新-1 我删除了xcopy任务,并尝试使用MSBuild复制任务执行所有操作。因此,需要将其文件复制到宿主项目的项目在.csproj文件中包含以下内容Azure pipelines VS 2019构建后命令和;Azure管道冲突,azure-pipelines,asp.net-core-5.0,azure-pipelines-tasks,Azure Pipelines,Asp.net Core 5.0,Azure Pipelines Tasks,类似的问题,在我的情况下不起作用。我在每个项目的后期构建中使用的xcopy命令在Azure管道中不起作用,构建失败。如果不完成此操作,我就无法发布到暂存。所以基本上我被卡住了 我的源代码结构如下面的屏幕截图所示 如您所见,插件项目位于/Modules文件夹中。在VS中,我在/Modules中的每个插件项目中都有构建后xcopy命令,用于将所需文件(如wwwroot、视图等)复制到宿主项目/Modules文件夹。所以在VS中,一旦一切都完成并部署完毕;文件夹结构如下所示 在这里,您可以看到插件
<PropertyGroup>
<SolutionDirectory>$([MSBuild]::GetDirectoryNameOfFileAbove(`$(MSBuildProjectDirectory)`, `Main.Project.sln`))\</SolutionDirectory>
<PluginDirectory>$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))</PluginDirectory>
</PropertyGroup>
<ItemGroup>
<ViewFiles Include="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\Views'))\**\*.*"></ViewFiles>
<WWWRootFiles Include="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\wwwroot'))\**\*.*"></WWWRootFiles>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Copy
SourceFiles="@(ViewFiles)"
DestinationFolder="$(PluginDirectory)\Views\%(RecursiveDir)"
SkipUnchangedFiles="true"/>
<Copy
SourceFiles="@(WWWRootFiles)"
DestinationFolder="$(PluginDirectory)\wwwroot\%(RecursiveDir)"
SkipUnchangedFiles="true"/>
</Target>
$([MSBuild]::GetDirectoryNameOffileOver(`$(MSBuildProjectDirectory)`,`Main.Project.sln`)\
$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))
现在这和Xcopy之前做的一样。这不会在Azure管道中生成错误。但是文件也没有被复制
使用azure管道下的
system.debug=true
变量查看详细日志
此外,msbuild属性函数不能嵌套到第二级项或属性中
因此,您应该将csproj文件更改为:
<PropertyGroup>
<SolutionDirectory>$([MSBuild]::GetDirectoryNameOfFileAbove(`$(MSBuildProjectDirectory)`, `Main.Project.sln`))\</SolutionDirectory>
<PluginDirectory>$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))</PluginDirectory>
<View_PluginDirectory>$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))\Views\%(RecursiveDir)</View_PluginDirectory>
<wwwroot_PluginDirectory>$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))\wwwroot\%(RecursiveDir)</wwwroot_PluginDirectory>
</PropertyGroup>
<ItemGroup>
<ViewFiles Include="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\Views'))\**\*.*"></ViewFiles>
<WWWRootFiles Include="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\wwwroot'))\**\*.*"></WWWRootFiles>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Copy
SourceFiles="@(ViewFiles)"
DestinationFolder="$(View_PluginDirectory)"
SkipUnchangedFiles="true"/>
<Copy
SourceFiles="@(WWWRootFiles)"
DestinationFolder="$(wwwroot_PluginDirectory)"
SkipUnchangedFiles="true"/>
</Target>
$([MSBuild]::GetDirectoryNameOffileOver(`$(MSBuildProjectDirectory)`,`Main.Project.sln`)\
$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))
$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)')\Views\%(RecursiveDir)
$([System.IO.Path]::GetFullPath('$(SolutionDirectory)\Host.Project\Modules\$(MSBuildProjectName)'))\wwwroot\%(RecursiveDir)
是的,因此缺少一些详细信息。为什么xcopy不能在管道中工作,为什么您不能让文件任务工作。你希望我们在没有更多细节的情况下如何回答这个问题。我甚至不确定这个问题是什么。简言之,xcopy在Auzre管道中似乎不受支持。无论如何,然后我删除了xcopy并使用MSBuild任务执行相同的操作,现在没有生成错误。我已经更新了上面的问题,提供了更多关于我现在所在位置的详细信息。您可以在构建时增加日志的详细程度,以查看发生了什么。您也可以使用copy而不是xcopyDid您使用的是您的私有代理吗?复制的文件不在repos下,而是在代理工作区目录下。您可以使用system.debug=true
检查详细日志。如果您使用私人代理,请输入代理的\u work
文件夹以获取该信息。如果使用hosted agent运行管道,则应使用$(build.SourcesDirectory)
添加发布生成工件
任务以查看更改。请参阅。@user2058413,请检查我的答案是否正确。