dotnet仅从VSTS解决方案中发布一个项目

时间:2018-09-03 06:25:46

标签: c# .net-core azure-devops

我们正在尝试使用.NET Core任务从VSTS中的Visual Studio解决方案构建一个项目。我们能够“ dotnet构建”该项目。但是,当我们尝试“ dotnet发布”时,它将尝试发布解决方案中的所有项目。即使我们使用“ dotnet custom”,它也会尝试发布所有项目。

是否有一种方法可以使用.NET Core任务仅发布一个或多个已构建的项目?还是我们应该运行自定义命令行任务?

原因是我们有一个不会构建的项目,我们不需要/想要发布它。因此,我们希望构建和发布一个项目,而不是所有项目。

Screenshot from VSTS

4 个答案:

答案 0 :(得分:4)

您可以使用dotnet publish <Path to .csproj>。这样只会构建和发布指定的项目以及它所依赖的项目。

要使用命令“发布”在“ .Net Core”任务中指定项目,您必须取消选中“发布Web项目”。

答案 1 :(得分:0)

这取决于每个项目的项目依赖关系。

换句话说,有一些配置可以说“哪个项目需要先构建,以便成功构建目标项目。”

如果使用的是Visual Studio,请右键单击解决方案,然后单击“属性”。 在此示例中,我的目标运行是TestAngular.Web.Host,并且要构建该项目,需要首先构建TestAngular.Web.CoreProject-Dependencies

如果您使用其他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">

按照相同的语法在此处添加或删除不需要的项目

答案 2 :(得分:0)

也许聚会晚了,但是为了控制要发布的项目,您可以取消链接“项目的路径”变量(通过单击“链接设置”)。这样就可以编辑该字段,您可以指定所需的.csproj。

Link settings dialog box

答案 3 :(得分:0)

另一种解决方案是在csproj中设置IsPublishable

我通常在它是一个单元测试项目的情况下执行此操作,否则,如果您为解决方案文件运行dotnet publish,则不需要发布它。

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <IsPackable>false</IsPackable>

    <IsPublishable>false</IsPublishable >

    <Configurations>prod;stage;dev</Configurations>
    <Platforms>AnyCPU</Platforms>
  </PropertyGroup>