【发布时间】:2018-08-23 13:54:13
【问题描述】:
我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案。
它有以下步骤:
1:Git 恢复 - 工作
2:NuGet 恢复 - 工作
3:构建 - 不起作用
查看日志时,我的第一个猜测是 MsBuild 不是在寻找 NuGet 存储它们的包。 NuGet 还原中的一些行:
2018-03-14T21:10:11.0352862Z Completed installation of AngleSharp 0.9.9
2018-03-14T21:10:11.0353230Z Adding package 'AngleSharp.0.9.9' to folder 'D:\a\1\s\packages'
2018-03-14T21:10:11.0353563Z Added package 'AngleSharp.0.9.9' to folder 'D:\a\1\s\packages'
2018-03-14T21:10:11.0354972Z Added package 'AngleSharp.0.9.9' to folder 'D:\a\1\s\packages' from source 'https://api.nuget.org/v3/index.json' 'Microsoft.SharePointOnline.CSOM.16.1.7317.1200' to folder 'D:\a\1\s\packages'
MsBuild 中的一些代码:
018-03-14T21:10:21.2105399Z PrepareForBuild:
2018-03-14T21:10:21.2105793Z Creating directory "bin\Release\".
2018-03-14T21:10:21.2424947Z Creating directory "obj\Release\".
2018-03-14T21:10:30.3569560Z ResolveAssemblyReferences:
2018-03-14T21:10:30.3570425Z Primary reference "AngleSharp, Version=0.9.9.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea, processorArchitecture=MSIL".
2018-03-14T21:10:30.3670272Z ##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2041,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "AngleSharp, Version=0.9.9.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
我的解决方案/包结构是:
....\mysolution\myproject\myproject.csproj
....\mysolution\myproject\packages.config
当前配置: 那么如何更改 Nuget 和/或 msbuild-behavior 以使其正常工作?
(更新):澄清一下:每个包都有这个问题。它们都在packages.config中,每个都是从Nuget下载的,但每个都不是从MsBuild中找到的
(Update2) 目前生成的命令如下: NUGET:
D:\a\_tool\NuGet\4.4.1\x64\nuget.exe restore D:\a\1\s\AweCsomeO365\packages.config -PackagesDirectory D:\a\1\a\packages -Verbosity Detailed -NonInteractive -ConfigFile D:\a\1\Nuget\tempNuGet_22.config
MSBUILD:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" "D:\a\1\s\AweCsomeO365\AweCsomeO365.csproj" /nologo /nr:false /dl:CentralLogger,"D:\a\_tasks\VSBuild_(GUID)\1.126.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll";"RootDetailId=(GUID)|SolutionDir=D:\a\1\s\AweCsomeO365"*ForwardingLogger,"D:\a\_tasks\VSBuild_(GUID)\1.126.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=D:\a\1\a /p:ReferencePath=D:\a\1\a\packages /p:platform="anyCPU" /p:configuration="Release" /p:VisualStudioVersion="15.0" /p:_MSDeployUserAgent="VSTS_(GUID)_build_4_22
我替换了 GUID; tempNuGetConfig 似乎是由 VSTS 动态生成的东西
还是。即使日志指出 nuget 存储包
Added package 'AngleSharp.0.9.9' to folder 'D:\a\1\a\packages'
MsBuild 似乎没有在那里找到它们:
For SearchPath "D:\a\1\a\packages".
2018-03-16T13:57:42.4625155Z Considered "D:\a\1\a\packages\AngleSharp.winmd", but it didn't exist.
2018-03-16T13:57:42.4625456Z Considered "D:\a\1\a\packages\AngleSharp.dll", but it didn't exist.
2018-03-16T13:57:42.4625730Z Considered "D:\a\1\a\packages\AngleSharp.exe", but it didn't exist.
VSTS-配置值:
MsBuild:/p:ReferencePath=$(Build.StagingDirectory)\packages
Nuget-DestiantionDirectory:$(Build.StagingDirectory)\packages
(update3):我有没有解决方案文件,但该存储库中只有一个 csproj 文件
【问题讨论】:
-
那么,您是否在 NuGet 输出中给出了“添加的包 ... AngleSharp ...”?这不是您发布的 3 行中的任何一行
-
看起来您的 packages.config 没有引用
AngleSharp。 -
这里可以显示
myproject.csproj的内容吗? -
AngleSharp 只是一个例子。我对每个包都有这个问题:Nuget 下载,但 MSBuild 找不到
-
我相信你应该有一个解决方案文件。尝试添加一个,然后更改您的构建以引用该解决方案。您似乎还对所有内容使用了默认配置,因此无需为您的 nuget restore 任务定义所有配置。在添加要构建的解决方案后,我会删除它并重新添加原始任务。
标签: c# msbuild nuget azure-devops