dotnet cli 发布命令与 Visual Studio 发布
Posted
技术标签:
【中文标题】dotnet cli 发布命令与 Visual Studio 发布【英文标题】:dotnet cli publish command vs visual studio publish 【发布时间】:2019-04-08 12:52:45 【问题描述】:我正在为一个包含 Angular 的 .NET core 2.2 Web 应用程序设置 Azure devops 构建管道,它运行的步骤之一是 dotnet publish。然而,与直接从 VS 2017 运行发布相比,最终结果并不是我所期望的。
作为针对特定环境运行自定义 npm 命令的一种方式。所以在我的 csproj 文件中我有这个
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<!-- Use conditional builds based on build target setting eg. debug, dev, prod etc -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build " Condition=" '$(Configuration)' == 'Debug' " />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod false --configuration=dev" Condition=" '$(Configuration)' == 'Test' " />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod true --configuration=prod" Condition=" '$(Configuration)' == 'Release' " />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:s-s-r --configuration=prod" Condition=" '$(BuildServerSideRenderer)' == 'true' And '$(Configuration)' == 'Release' " />
但是,devops 构建没有运行正确的命令。查看构建日志后,它只是运行 ng build,不包括针对特定配置的额外标志。
为了确认这一点,我在命令行运行了
dotnet 发布 -c 测试
,果然,输出表明它运行了 ng build,似乎没有使用 csproj 文件中的内容。
那么我怎样才能让我的 npm 命令获取类似 csproj 文件中的配置值,但是当 dotnet publish 运行时?
【问题讨论】:
问题:有什么理由你不能明确地使用 npm 任务并将它们完全排除在 csproj 之外?我强烈建议您完全控制命令。如果你真的必须通过 csproj 来做,我会在 package.json 中创建不同的命令,并将它们称为“buildTest”、“buildProd”等。只需将 csproj 的命令部分保留为“npm run buildTest”、“ npm 运行 buildProd”。这样,您就不必担心构建系统会丢弃参数。 是的,我只是在考虑。我现在正在尝试……它有效!惊人的!将您的回复移动为答案,谢谢 太棒了,现在将推荐添加为答案。 【参考方案1】:我建议您将 npm 命令移动到 package.json 中,而不是尝试通过 MSBuild 获取参数。
"scripts":
"buildTest": "npm run build --prod false --configuration=dev",
"buildProd": "npm run build --prod true --configuration=prod"
然后使用 csproj 只运行 npm run buildTest
和 npm run buildProd
等等。
【讨论】:
以上是关于dotnet cli 发布命令与 Visual Studio 发布的主要内容,如果未能解决你的问题,请参考以下文章
Angular-CLI 和 dotnet cli 如何编写命令同时观看? [复制]
visual studio code 命令行创建发布一个项目
如何使用 dotnet cli 命令以 VB.NET 语言创建 ASP.NET Core 项目?