Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 生成的捆绑包文件不包括在已发布的工件中_Webpack_Azure Devops_Msbuild - Fatal编程技术网

Webpack 生成的捆绑包文件不包括在已发布的工件中

Webpack 生成的捆绑包文件不包括在已发布的工件中,webpack,azure-devops,msbuild,Webpack,Azure Devops,Msbuild,我有一个asp.net(.net 4)程序,我最近在其中集成了ReactJS页面。我使用了Webpack这样做 该项目有构建后事件来构建我的JS捆绑包,如下所示: npm install npm run build 我的网页包配置使包被写入名为dist的文件夹中 在发展中,一切都很好。当我构建解决方案(以及有问题的项目)时,捆绑包是正确构建的 然而,当我试图使用VisualStudioPublish功能在发布模式下发布我的项目时,我很快注意到我的dist文件夹中缺少了我的JS包 然后,我通过对

我有一个asp.net(.net 4)程序,我最近在其中集成了ReactJS页面。我使用了Webpack这样做

该项目有构建后事件来构建我的JS捆绑包,如下所示:

npm install
npm run build
我的网页包配置使包被写入名为dist的文件夹中

在发展中,一切都很好。当我构建解决方案(以及有问题的项目)时,捆绑包是正确构建的

然而,当我试图使用VisualStudioPublish功能在发布模式下发布我的项目时,我很快注意到我的dist文件夹中缺少了我的JS包

然后,我通过对csproj的一些调整修复了该问题,如下所示:

I first included the dist folder in its entirety to my project, as I only had included one file from the folder into the project :
<Content Include="dist\**">
  <Visible>false</Visible>
</Content>

I then added a Target step at the end of the csproj to include the content of the folder in the published package :
<Target Name="AfterBuild">
  <ItemGroup>
    <BundleFiles Include="dist\**" />
    <FilesForPackagingFromProject Include="%(BundleFiles.Identity)">
      <DestinationRelativePath>%(BundleFiles.Identity)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>
我首先将dist文件夹全部包含到我的项目中,因为我只将文件夹中的一个文件包含到项目中:
假的
然后,我在csproj的末尾添加了一个目标步骤,以将文件夹的内容包含在已发布的包中:
%(BundleFiles.Identity)
在这些更改之后,我可以发布我的web应用程序,并生成捆绑包(在构建事件之后),然后将其包含到发布文件夹中

所以现在,问题是。。。 我们使用Azure DevOps管道构建生产版本。即使在我对csproj进行了更改之后,JS包也不包括在管道的已发布工件中

我可以看到构建后事件在日志中运行(我甚至尝试将其切换到预构建),并且生成了JS包。 但是,当我解压缩项目并查看dist文件夹时:它是空的

管道的配置在我们的工作流程中并不是什么新鲜事,它已经存在一年多了,并且可以很好地用于其他任何用例。到目前为止唯一的问题是:来自“dist”文件夹的JS捆绑包没有转移到发布中

请注意,我们不托管管道代理,我们使用“windows最新版本”Azure代理,我们使用VS2019构建。我的猜测是,按照构建事件的顺序,发布工件中要包含的文件列表可能会在生成JS文件之前写入

任何帮助都会很好,
提前感谢

您可以尝试将以下属性组添加到您的csproj文件中,如果它们不在csproj中

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      AfterBuild;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      AfterBuild;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>

后建;
$(将所有文件复制到SingleFolderForpPackageDependson);
后建;
$(将所有文件复制到SingleFolderForpPackageDependson);
有关详细信息,请参阅

如果上述方法不起作用。您还可以在发布生成工件之前添加以下任务

要解压缩工件包

并添加一个用于将dist文件夹复制到工件的


然后添加一个任务来再次压缩工件。

您可以尝试将以下属性组添加到csproj文件中,如果它们不在csproj中

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      AfterBuild;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      AfterBuild;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>

后建;
$(将所有文件复制到SingleFolderForpPackageDependson);
后建;
$(将所有文件复制到SingleFolderForpPackageDependson);
有关详细信息,请参阅

如果上述方法不起作用。您还可以在发布生成工件之前添加以下任务

要解压缩工件包

并添加一个用于将dist文件夹复制到工件的


然后添加一个任务来再次压缩工件。

这些属性组为我完成了这项工作。非常感谢你的帮助,你不知道我上周花了多少时间试图让这个工作。这些房地产集团为我做了这项工作。非常感谢你的帮助,你不知道我上周花了多少时间才让它发挥作用。