【发布时间】:2020-12-26 11:39:50
【问题描述】:
我有一个包含 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://docs.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
这让我有一天被困在这个问题上,非常令人沮丧:'(
【问题讨论】:
标签: azure azure-devops msbuild azure-pipelines msbuild-task