Deployment 如何将项目的输出包括在随后生成的项目的msbuild部署中

Deployment 如何将项目的输出包括在随后生成的项目的msbuild部署中,deployment,azure-devops,msbuild,nopcommerce,Deployment,Azure Devops,Msbuild,Nopcommerce,我在从事商业工作。该框架的构建方式允许在解决方案中创建插件作为附加项目。这些项目必须参考“核心”,它本质上是部署的MVC网站 由于msbuild的性质,我想不出任何方法(没有黑客攻击)将插件项目构建(dll文件)的输出包含在核心构建部署中,因为插件需要首先构建核心 我理解这是一个循环依赖,我也理解在正常情况下,人们甚至不需要插件知道web项目的存在。。。但这就是使用NopCommerce时的情况 我已尝试在网站csproj文件中使用msbuild执行以下操作: <Target Name="

我在从事商业工作。该框架的构建方式允许在解决方案中创建插件作为附加项目。这些项目必须参考“核心”,它本质上是部署的MVC网站

由于msbuild的性质,我想不出任何方法(没有黑客攻击)将插件项目构建(dll文件)的输出包含在核心构建部署中,因为插件需要首先构建核心

我理解这是一个循环依赖,我也理解在正常情况下,人们甚至不需要插件知道web项目的存在。。。但这就是使用NopCommerce时的情况

我已尝试在网站csproj文件中使用msbuild执行以下操作:

<Target Name="NopTarget" AfterTargets="Build">
    <ItemGroup>
      <BuildPlugins Include="..\..\Plugins\**\*.csproj" />
    </ItemGroup>

    <Message Text="directory: @(BuildPlugins)" Importance="HIGH" />

    <MSBuild Projects="@(BuildPlugins)" />

    <ItemGroup>
      <NopPlugins Include="$(MSBuildProjectDirectory)\Plugins\**\*.*" />
    </ItemGroup>

    <Message Text="@(BuildPlugins)" Importance="HIGH" />
    <Message Text="After Build Plugin Copy - @(NopPlugins) - $(TargetDir)\%(RecursiveDir)" Importance="HIGH" />

    <Copy SourceFiles="@(NopPlugins)" DestinationFolder="$(TargetDir)\Plugins\%(RecursiveDir)" />

。。。但我认为这是一个巨大的混乱。而且,它似乎只能在我的开发机器上正常工作。当我在devops中尝试时,我得到了一堆与失败的恢复相关的nuget包错误。同样,这是一个循环依赖或构建顺序的问题

(仅供参考,我正在进行参数化部署,以便与Azure Devops一起使用)

。。。但我认为这是一个巨大的混乱。而且,它似乎只能正常工作 在我的开发机器上。当我在devops尝试时,我得到了一堆nuget 与还原失败相关的包错误。再说一次,这是我们的问题 循环依赖,或构建顺序

由于它在您的本地机器上工作,我认为这只是您的恢复步骤出了问题。它导致了下一个构建错误

根据脚本,您的
核心
项目和
插件
项目不在同一目录级别。因此,如果
xx.sln
文件中未定义
plugins
项目,则您的
nuget/dotnet restore
任务应运行两次,以分别还原两个项目的包

如果您的项目目标是
.net framework
,请使用,或者在项目目标是
.net core/standard
时使用中的restore命令。只需确保已恢复所有项目的包