dotnet 在 VSTS 中仅发布解决方案中的一个项目
Posted
技术标签:
【中文标题】dotnet 在 VSTS 中仅发布解决方案中的一个项目【英文标题】:dotnet publish only one project from the solution in VSTS 【发布时间】:2018-09-03 06:25:46 【问题描述】:我们正在尝试使用 .NET Core 任务从 VSTS 中的 Visual Studio 解决方案构建一个项目。我们能够“dotnet 构建”该项目。但是当我们尝试“dotnet publish”时,它会尝试从解决方案中发布所有项目。即使我们使用“dotnet custom”,它也会尝试发布所有项目。
有没有办法使用 .NET Core 任务仅发布一个或已构建的项目?还是我们应该运行自定义命令行任务?
原因是我们有一个无法构建的项目,我们不需要/不想发布它。所以我们想构建和发布一个项目,而不是所有项目。
【问题讨论】:
你能在这里显示构建日志吗? 【参考方案1】:您可以使用dotnet publish <Path to .csproj>
。这将仅构建和发布指定的项目和它所依赖的项目。
要使用“发布”命令在“.Net Core”任务中指定项目,您必须取消选中“发布 Web 项目”。
【讨论】:
最后,我这样做了,但使用的是命令行任务而不是 .NET Core 任务。但我的问题是我可以使用 .NET Core 任务来执行此操作吗? 在使用命令“发布”的“.Net Core”任务中,如果您删除复选标记“发布 Web 项目”,您可以指定项目的路径。 Microsoft 有关于 VSTS 任务的基本文档:docs.microsoft.com/en-us/vsts/pipelines/tasks/build/… 实际上这就是答案。因此,如果您可以“升级”您的评论作为答案,我可以批准它。【参考方案2】:另一种解决方案是在 csproj 中设置 IsPublishable
。
我通常在它是一个单元测试项目的情况下这样做,或者如果你为解决方案文件运行 dotnet publish
则不需要发布。
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
<IsPublishable>false</IsPublishable >
<Configurations>prod;stage;dev</Configurations>
<Platforms>AnyCPU</Platforms>
</PropertyGroup>
【讨论】:
您是否在任何地方找到此文档? 是的,在github 谢谢。不完全是文档,但它必须这样做。 这是实现这一目标的最简单方法。谢谢!【参考方案3】:这取决于每个项目的项目依赖关系。
也就是说,有一些配置说“需要先构建哪个项目,才能让你的目标项目成功构建。”
如果您使用的是 Visual Studio,请右键单击解决方案并单击“属性”。
在此示例中,我的目标运行是 TestAngular.Web.Host
,为了构建该项目,需要先构建 TestAngular.Web.Core
。
如果您使用不同的 IDE,只需找到您的目录,在我的情况下它是 src\TestAngular.Web.Host
并修改 TestAngular.Web.Host.csproj
文件
<Project Sdk="Microsoft.NET.Sdk.Web">
...
<ItemGroup>
<ProjectReference Include="..\TestAngular.Web.Core\TestAngular.Web.Core.csproj" />
</ItemGroup>
...
</Project Sdk="Microsoft.NET.Sdk.Web">
使用相同的语法添加或删除此处不需要的项目
【讨论】:
首先这看起来很有希望,但不幸的是,这不是答案。不存在强制构建我们不想构建的项目的依赖项。可能是 .NET Core 任务的特性,你不能定义你想要发布的 csproj。【参考方案4】:如果您取消选中“发布 Web 项目”,您将看到一个允许您输入要定位的项目 (csproj) 的字段。
【讨论】:
【参考方案5】:可能迟到了,但为了控制要发布的项目,您可以取消链接“项目路径”变量(通过点击“链接设置”)。这使得该字段可编辑,您可以指定所需的 .csproj。
【讨论】:
以上是关于dotnet 在 VSTS 中仅发布解决方案中的一个项目的主要内容,如果未能解决你的问题,请参考以下文章
错误:C:\Program Files\dotnet\dotnet.exe 失败,返回码:1
如何从VSTS CI管道为解决方案中的每个项目单独发布工件?
centos linux上的dotnet restore错误:访问路径被拒绝