根据构建配置变量,使dotnet restore忽略某些软件包

时间:2019-05-02 14:13:15

标签: .net-core

我有一个.csproj,其中包含以下内容:

  <ItemGroup>
    <PackageReference Include="PUBLIC PACKAGE" Version="6.0.0" />
    <PackageReference Include="PUBLIC PACKAGE" Version="2.6.1" />
  </ItemGroup>

  <!-- When building with a certain constant, do not restore these packages because they exist on a server we can't reach on these pc's -->
  <ItemGroup Condition="!$(DefineConstants.Contains('BUILD_CONSTANT'))">
    <PackageReference Include="PRIVATE PACKAGE" Version="7.*" />
    <PackageReference Include="PRIVATE PACKAGE" Version="7.*" />
  </ItemGroup>

我们的项目是在本地计算机上开发的,但是我们正在准备将其集成到存在于其他地方的系统中。该系统还包含我们需要的一些nuget软件包。这些软件包无法从我们本地的PC还原,这就是为什么我添加了条件,因此在构建时,不应尝试还原这些软件包以避免错误。

在应用程序的其他部分,我们也避免依赖于这些软件包。当我们的产品完成后,我们将删除这些特殊条件并构建常量,因为这样我们就不再需要在新系统之外运行它们。

dotnet restore失败,因为它无法还原这些软件包。它未经授权,这很有意义;尽管我希望它可以避免还原这些软件包。

如何让我的dotnet restore忽略基于CI / CD管道中基于变量的某些程序包引用?我希望传递特殊的构建常量(CUSTOM_DEBUG)可以工作,但是dotnet restore并没有与dotnet builddotnet test等类似的配置参数。

运行dotnet build -c CUSTOM_DEBUG 可以的工作,并且不会尝试还原软件包;所以我有一个解决方法。我只是想知道是否有一种方法可以单独使用dotnet restoredotnet build

我正在使用.NET Core 2.2

0 个答案:

没有答案