gpt4 book ai didi

Azure DevOps 构建无法加载引用的程序集

转载 作者:行者123 更新时间:2023-12-02 07:57:13 24 4
gpt4 key购买 nike

我有一个包含 400 个项目的 .Net 4.7.6 解决方案。其中一些项目引用本地 DLL,一些项目使用 nugets 包。

在我们的 VS 上一切都构建得很好,在我们的构建机器(使用 MSBuild)上一切都构建得很好,但是一旦我们将所有内容推送到 Azure DevOps 上,我们就会有一堆引用的 DLL(不是全部)无法加载:

来自包的一个例子是 Log4Net:

##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2084,5): Warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'log4net.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.

(显然,它失败了,因为没有找到它:)

##[error]Src\External\NModbus\Modbus\Device\ModbusMasterTcpConnection.cs(20,7): Error CS0246: The type or namespace name 'log4net' could not be found (are you missing a using directive or an assembly reference?)

某些本地 DLL 出现同样的错误:

##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2084,5): Warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'Unme.Common.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.
##[error]Src\External\NModbus\Modbus\Data\DataStore.cs(16,7): Error CS0246: The type or namespace name 'Unme' could not be found (are you missing a using directive or an assembly reference?)

不确定我错过了什么?我们整个团队的 VS Studio 和 azure 之间的可加载 DLL 有什么不同?

这是我们当前的构建定义:

# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://learn.microsoft.com/azure/devops/pipelines/apps/windows/dot-net

trigger:
- master

pool:
vmImage: 'windows-latest'

variables:
solution: 'Solution/SomeSolution.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'

steps:

- task: NuGetToolInstaller@1
inputs:
versionSpec: '>=5.4'
checkLatest: true

- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'

- task: Assembly-Info-NetFramework@2
inputs:
Path: '$(Build.SourcesDirectory)'
FileNames: |
**\AssemblyInfo.cs
InsertAttributes: false
FileEncoding: 'auto'
WriteBOM: false
VersionNumber: '5.1.0.*'
FileVersionNumber: '5.1.0.*'
LogLevel: 'verbose'
FailOnWarning: false

- task: MSBuild@1
inputs:
solution: '$(solution)'
msbuildVersion: latest
msbuildArchitecture: x86
platform: 'Any CPU'
configuration: 'Debug'
maximumCpuCount: true


- task: VSTest@2
inputs:
DisableTelemetry: false
testSelector: 'testAssemblies'
testAssemblyVer2: '$(solution)'
searchFolder: '$(System.DefaultWorkingDirectory)'
codeCoverageEnabled: true
platform: 'Any CPU'
configuration: 'Debug'
rerunFailedTests: false

有一天我被困在这个问题上,非常令人沮丧:'(

最佳答案

What could be different regarding the loadable DLL between our VS Studio of the whole team and azure?

当我们在Azure DevOps上处理本地dll文件时,我们需要将这些本地dll文件提交到存储库中。

还有HintPath在项目文件中,那些本地dll文件应该是相对路径而不是绝对路径。

最后但并非最不重要的一点是,如果您通过 git lfs 推送 dll 文件要存储库,在获取源步骤中有一个特定的复选框来启用 git-lfs 支持。如果没有它,文件将被替换为 lfs 下载位置的占位符:

enter image description here

更新:

we need to submit the those local dll files into the repo. what do youmean by that? All DLL are on our git(I mean, on a brand new computerwith visual studio, I can checkout the code and build, no need toinstall anything else). Also, we use Azure Repository, so we don'thave GUI steps, and I've no Get Sources step in the template that hasbeen generated

我的意思是,如果我们将这些本地 dll 文件与 Azure 管道一起使用,我们需要将这些 dll 文件与我们的项目一起提交到 Azure devops 存储库。当我们创建构建管道时,我们将选择构建源,然后Azure Devops管道会将构建源 check out 到构建代理:

enter image description here

代码来源可能是Azure devops repo , Github , Github Enterprise server , Bitucket cloud 。如果您选择Azure devops存储库作为代码源,我们需要将这些dll文件提交并推送到Azure devops存储库。

接下来,当您打开构建管道 (YAML),然后单击三个垂直点,选择“触发器”并切换到 YAML 选项卡时,您将看到获取源:

enter image description here

enter image description here

关于Azure DevOps 构建无法加载引用的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63787918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com