Webpack 生成的捆绑包文件不包括在已发布的工件中
我有一个asp.net(.net 4)程序,我最近在其中集成了ReactJS页面。我使用了Webpack这样做 该项目有构建后事件来构建我的JS捆绑包,如下所示: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包 然后,我通过对
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文件夹复制到工件的
然后添加一个任务来再次压缩工件。这些属性组为我完成了这项工作。非常感谢你的帮助,你不知道我上周花了多少时间试图让这个工作。这些房地产集团为我做了这项工作。非常感谢你的帮助,你不知道我上周花了多少时间才让它发挥作用。