Des*_*ond 1 msbuild asp.net-mvc msbuild-task angular-cli azure-pipelines
Azure Pipeline 项目有两个构建代理
构建成功,资产、chunk.js 文件和bundle.js 文件作为工件发布
我从以前的构建代理下载工件并将它们提取到$(build.stagingDirectory)/Scripts/dist目录中,因为它们将被 ASP.net 项目使用。
我的提取文件任务 ymal 是
steps:
- task: ExtractFiles@1
displayName: 'Extract files bundle.zip'
inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/dist/$(Build.BuildId)_bundle.zip'
destinationFolder: '$(build.sourcesDirectory)/Scripts/dist'
Run Code Online (Sandbox Code Playgroud)
当MSBuild构建 ASP.net 项目时,它无法找到##[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets(182,5): Error MSB3030: Could not copy the file "Scripts\dist\main.bundle.js" because it was not found.
MS Build yaml 是:
steps:
- task: MSBuild@1
displayName: 'Build solution NMG.Portal.MVCForAngular'
inputs:
solution: NMG.WebApp.MVCForAngular/NMG.WebApp.MVCForAngular.csproj
msbuildArguments: '/p:ProjectFile=$(build.sourcesDirectory)\NMG.WebApp.MVCForAngular\NMG.WebApp.MVCForAngular.csproj /p:DeployOnBuild=true /p:SkipInvalidConfigurations=true /p:OutDir="$(build.stagingDirectory)\\"'
clean: false
logProjectEvents: true
createLogFile: true
Run Code Online (Sandbox Code Playgroud)
我的 ASP.NET BundleConfig.cs 文件具有以下代码。
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"));
bundles.Add(new ScriptBundle("~/bundles/nmg").Include(
"~/Scripts/dist/inline*",
"~/Scripts/dist/polyfills*",
"~/Scripts/dist/scripts*",
"~/Scripts/dist/vendor*",
"~/Scripts/dist/main*"));
bundles.Add(new StyleBundle("~/Content/nmg").Include(
"~/Scripts/dist/styles*"));
}
}
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,这应该可行。
我想知道这里缺少什么?为什么 MSBuild 找不到我在 Scripts/dist 中提取的包。
复制到 Scripts/dist 文件夹的 main.bundle.js 是 main.7515c53aa0f2ef625908.bundle.js 但 MSBuild 不考虑它。
实际问题是,当 MSBuild 创建发布文件时,它会根据构建定义复制文件。我编辑了 .csproj 文件,如下所示,复制了相关文件。
<Content Include="assets\i18n\**" />
<Content Include="Scripts\dist\*.bundle.js" />
<Content Include="Scripts\dist\*.bundle.css" />
<Content Include="*.chunk.js" />
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为在 MSBuild 任务之前,我确实将角度文件复制到相关文件夹。
| 归档时间: |
|
| 查看次数: |
16765 次 |
| 最近记录: |