【问题标题】:MSB3245: Could not resolve this reference. Could not locate the assemblyMSB3245:无法解析此引用。找不到程序集
【发布时间】:2022-01-26 12:13:47
【问题描述】:

当我使用 Azure DevOps 构建代码时,我收到以下错误消息。同样的代码,当我在本地构建时,我能够成功构建它。

警告 MSB3245:无法解析此引用。找不到程序集“Azure.Core,Version=1.20.0.0,Culture=neutral,PublicKeyToken=92742159e12e44c8,processorArchitecture=MSIL”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。

我无法弄清楚我在这里缺少什么。

以下是 YAML 文件:

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- feature/bla

variables:
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

pool:
  vmImage: 'windows-latest'

steps:

- task: NuGetToolInstaller@1


- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: './src/Lidia.SSIS.ScriptUtils.sln'    
    
    
- task: VSBuild@1
  inputs:
    solution: './src/bla.sln'
    vsVersion: '16.0'
    msbuildArgs: '/p:OutDir=$(build.artifactstagingdirectory)/bla'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    clean: true

- task: PublishBuildArtifacts@1
  displayName: 'Publish ScriptUtils project'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/bla'
    ArtifactName: 'bla'
    publishLocation: 'Container'

构建日志片段:

2022-01-24T17:24:41.1372670Z ##[section]Starting: VSBuild
2022-01-24T17:24:41.1534676Z ==============================================================================
2022-01-24T17:24:41.1534981Z Task         : Visual Studio build
2022-01-24T17:24:41.1535235Z Description  : Build with MSBuild and set the Visual Studio version property
2022-01-24T17:24:41.1536444Z Version      : 1.198.1
2022-01-24T17:24:41.1537072Z Author       : Microsoft Corporation
2022-01-24T17:24:41.1537368Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/visual-studio-build
2022-01-24T17:24:41.1537684Z ==============================================================================
2022-01-24T17:24:42.4992500Z ##[command]"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.198.1\ps_modules\MSBuildHelpers\vswhere.exe" -version [16.0,17.0) -latest -format json
2022-01-24T17:24:42.9208406Z ##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" "D:\a\1\s\src\testest.sln" /nologo /nr:false /t:"Clean" /dl:CentralLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.198.1\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll";"RootDetailId=10b407f2-71af-4715-8e64-1e541b1a862f|SolutionDir=D:\a\1\s\src|enableOrphanedProjectsLogs=true"*ForwardingLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.198.1\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:OutDir=D:\a\1\a/testest /p:platform="Any CPU" /p:configuration="Release" /p:VisualStudioVersion="16.0" /p:_MSDeployUserAgent="VSTS_50ac3de3-2135-4b5c-a9b3-2b73c7988867_build_319_0"
2022-01-24T17:24:43.0654724Z Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch.
2022-01-24T17:24:43.1337848Z Build started 1/24/2022 5:24:43 PM.
2022-01-24T17:24:43.3530655Z Project "D:\a\1\s\src\testest.sln" on node 1 (Clean target(s)).
2022-01-24T17:24:43.3539797Z ValidateSolutionConfiguration:
2022-01-24T17:24:43.3540299Z   Building solution configuration "Release|Any CPU".
2022-01-24T17:24:43.4997279Z Project "D:\a\1\s\src\testest.sln" (1) is building "D:\a\1\s\src\testest.Tests\Lidia.SSIS.Tests.csproj" (2) on node 1 (Clean target(s)).
2022-01-24T17:24:43.4997907Z CoreClean:
2022-01-24T17:24:43.4998177Z   Creating directory "obj\Release\".
2022-01-24T17:24:43.6865893Z Project "D:\a\1\s\src\testest.Tests\Lidia.SSIS.Tests.csproj" (2) is building "D:\a\1\s\src\testest\testest.csproj" (3:2) on node 1 (Clean target(s)).
2022-01-24T17:24:43.6867249Z CoreClean:
2022-01-24T17:24:43.6867911Z   Creating directory "obj\Release\".
2022-01-24T17:24:43.6906930Z Done Building Project "D:\a\1\s\src\testest\testest.csproj" (Clean target(s)).
2022-01-24T17:24:43.6908456Z Done Building Project "D:\a\1\s\src\testest.Tests\Lidia.SSIS.Tests.csproj" (Clean target(s)).
2022-01-24T17:24:43.6921849Z Done Building Project "D:\a\1\s\src\testest.sln" (Clean target(s)).
2022-01-24T17:24:43.6958975Z 
2022-01-24T17:24:43.6959730Z Build succeeded.
2022-01-24T17:24:43.6964730Z     0 Warning(s)
2022-01-24T17:24:43.6965326Z     0 Error(s)
2022-01-24T17:24:43.6966592Z 
2022-01-24T17:24:43.6967492Z Time Elapsed 00:00:00.56
2022-01-24T17:24:43.8608970Z ##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" "D:\a\1\s\src\testest.sln" /nologo /nr:false /dl:CentralLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.198.1\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll";"RootDetailId=356c0d1e-5323-43e1-bb4e-b9c582c4652a|SolutionDir=D:\a\1\s\src|enableOrphanedProjectsLogs=true"*ForwardingLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.198.1\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:OutDir=D:\a\1\a/testest /p:platform="Any CPU" /p:configuration="Release" /p:VisualStudioVersion="16.0" /p:_MSDeployUserAgent="VSTS_50ac3de3-2135-4b5c-a9b3-2b73c7988867_build_319_0"
2022-01-24T17:24:44.0215853Z Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch.
2022-01-24T17:24:44.0785529Z Build started 1/24/2022 5:24:44 PM.
2022-01-24T17:24:44.2417508Z Project "D:\a\1\s\src\testest.sln" on node 1 (default targets).
2022-01-24T17:24:44.2426320Z ValidateSolutionConfiguration:
2022-01-24T17:24:44.2426747Z   Building solution configuration "Release|Any CPU".
2022-01-24T17:24:44.3935986Z Project "D:\a\1\s\src\testest.sln" (1) is building "D:\a\1\s\src\testest\testest.csproj" (2) on node 1 (default targets).
2022-01-24T17:24:44.3937769Z PrepareForBuild:
2022-01-24T17:24:44.3938123Z   Creating directory "D:\a\1\a/testest\".
2022-01-24T17:24:45.6258856Z ResolveAssemblyReferences:
2022-01-24T17:24:45.6259658Z   Primary reference "Azure.Core, Version=1.20.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL".
2022-01-24T17:24:45.6396543Z ##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "Azure.Core, Version=1.20.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2022-01-24T17:24:45.6435635Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Azure.Core, Version=1.20.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\a\1\s\src\testest\testest.csproj] 

这是 CSPROJ sn-p:

 <ItemGroup>
    <Reference Include="Azure.Core, Version=1.20.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
      <HintPath>..\..\..\..\..\..\..\packages\Azure.Core.1.20.0\lib\net461\Azure.Core.dll</HintPath>
    </Reference>
    <Reference Include="Azure.Identity, Version=1.5.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
      <HintPath>..\..\..\..\..\..\..\packages\Azure.Identity.1.5.0\lib\netstandard2.0\Azure.Identity.dll</HintPath>
      <Private>True</Private>
    </Reference> 

这里是 packages.config sn-p:

<packages>
  <package id="Azure.Core" version="1.20.0" targetFramework="net472" />
  <package id="Azure.Identity" version="1.5.0" targetFramework="net472" />
  <package id="Azure.Storage.Blobs" version="12.10.0" targetFramework="net472" /> 

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    MSB3245:无法解析此引用。找不到程序集

    这是因为您为 nuget 还原任务指定了 restoreDirectory

    如果您在构建解决方案时未在本地指定 packages 文件夹,则不应在 Azure-devops 中指定它。

    当您为 nuget restore 任务指定restoreDirectory 时,恢复的包保存在c:\packages 文件夹中,但是项目中包的引用路径仍为旧路径。

    这就是您收到错误“找不到程序集”的原因。

    【讨论】:

    • 非常感谢您的提示。我删除了 RestoryDirectory 参数,但我似乎仍然遇到同样的问题。请参阅问题中更新的更新 Yaml。不知道我在这里错过了什么。
    • @tamirisadp,分享项目文件。您问题中的 .csproj,如果您的项目中有任何 nuget.config,也请分享。
    • 我现在已经从 nuget.config 和 .csproj 更新了 sn-ps。非常感谢您的帮助。
    • @tamirisadp,这是因为您已将默认包文件夹从解决方案文件夹更改为更高的父目录&lt;HintPath&gt;..\..\..\..\..\..\..\packages\Azure.Core.1.20.0\lib\net461\Azure.Core.dll&lt;/HintPath&gt;。因此,您应该添加nuget.config NOT packages.config 并将repositorypath 指定到正确的路径,请查看线程以获取更多详细信息:stackoverflow.com/questions/18376313/…
    • 非常感谢@Leo。我可以通过根据 nuget 任务放置文件的确切位置更改 packages.config 文件中的路径来解决此问题。我现在还删除了直接 c:\Packages 并将其编码为相对路径。再次感谢您的帮助。
    【解决方案2】:

    您不应在 azure 管道任务中使用引用驱动器的路径,因为您无权访问管道代理范围之外的目录,因此在这种情况下,您的 nuget 还原任务不起作用。引用时使用预定义变量(https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml),例如:

    - task: VSBuild@1
      inputs:
        solution: '$(Build.SourcesDirectory)/src/bla.sln'
    

    不确定为什么还原任务指定了还原目录。如果您需要使用特定目录,请再次使用预定义的构建或代理变量。不过一般来说,应该恢复和引用包,而不需要指定恢复目录:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget?view=azure-devops#examples

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2013-12-24
      • 2020-06-17
      • 2015-06-15
      相关资源
      最近更新 更多