相关疑难解决方法(0)

如何在我的.Net Core项目解决方案中包含NuGet包?

对于经典的.Net项目,如果我添加了对NuGet包的引用,它将被下载到packages文件夹,我可以将其与我的其余代码一起检查到源代码控制中.这允许任何开发人员下载代码以及NuGet包,而无需设置包源来单独下载包.这不是.Net Core项目的工作方式.似乎没有解决方案的包文件夹,每个开发人员都可以设置自定义包源并在获取代码时下载包.有没有办法配置.Net Core项目像经典的.Net项目那样管理一个包文件夹?

nuget nuget-package-restore .net-core

5
推荐指数
1
解决办法
4810
查看次数

Azure Pipelines:“错误 NETSDK1004:未找到资产文件 '...\project.assets.json'。” 在使用 Cache@2 任务缓存 Nuget 包时在管道中

我有一个 .net core 3.1 解决方案,其中包含多个 Web 和类库项目。所有包都使用文件中的<PackageReference>格式.csproj

我正在使用 Azure DevOps Pipelines 构建解决方案,我想通过缓存 Nuget 包而不是在每次运行时从 nuget.org 恢复它们来减少我的构建时间。

按照文档和博客文章的一些指导,我已经:

  1. 将此nuget.config文件添加到我的解决方案中,以便始终从 nuget.org 恢复包:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <clear />
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
      </packageSources>
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)
  2. Directory.Build.props在我的解决方案中添加了一个文件,以便为每个项目packages.lock.json在构建时生成一个。

    <Project>
      <PropertyGroup>
        <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
        <DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
      </PropertyGroup>
    </Project>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将生成的packages.lock.json文件添加到 git。

  4. Cache@2任务集成到我的azure-pipeline.yml文件中,如下所示:

    trigger:
    - master
    - users/*
    
    pool:
      vmImage: 'windows-latest'
    
    variables:
      buildConfiguration: 'Debug'
      NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages
    
    steps:
    - task: Cache@2
      displayName: Cache nuget packages …
    Run Code Online (Sandbox Code Playgroud)

.net nuget .net-core azure-devops azure-devops-pipelines

5
推荐指数
1
解决办法
1928
查看次数