MSBuild失败,但在VisualStudio中加载项目后,使用MSBuild可以正常工作

4

我有一个全新的安装了VS2017的Windows 10系统。

VisualStudio已关闭。在调用nuget restore xxx.sln后,我收到以下错误消息:

D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.client\nestle.zls.clientSetup\nestle.zls.clientSetup.wixproj : error MSB4057: Das Ziel "_IsProjectRestoreSupported" ist im Projekt nicht vorhanden.
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.leitstand\nestle.zls.leitstandSetup\nestle.zls.leitstandSetup.wixproj : error MSB4057: Das Ziel "_IsProjectRestoreSupported" ist im Projekt nicht vorhanden.
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.server\nestle.zls.serverSetup\nestle.zls.serverSetup.wixproj : error MSB4057: Das Ziel "_IsProjectRestoreSupported" ist im Projekt nicht vorhanden.
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.setup.common\nestle.zls.setup.common.wixproj : error MSB4057: Das Ziel "_IsProjectRestoreSupported" ist im Projekt nicht vorhanden.
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.client\nestle.zls.clientSetup\nestle.zls.clientSetup.wixproj : warning NU1503: Skipping restore for project 'D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.client\nestle.zls.clientSetup\nestle.zls.clientSetup.wixproj'. The project file may be invalid or missing targets required for restore. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.leitstand\nestle.zls.leitstandSetup\nestle.zls.leitstandSetup.wixproj : warning NU1503: Skipping restore for project 'D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.leitstand\nestle.zls.leitstandSetup\nestle.zls.leitstandSetup.wixproj'. The project file may be invalid or missing targets required for restore. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.server\nestle.zls.serverSetup\nestle.zls.serverSetup.wixproj : warning NU1503: Skipping restore for project 'D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.server\nestle.zls.serverSetup\nestle.zls.serverSetup.wixproj'. The project file may be invalid or missing targets required for restore. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.setup.common\nestle.zls.setup.common.wixproj : warning NU1503: Skipping restore for project 'D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.setup.common\nestle.zls.setup.common.wixproj'. The project file may be invalid or missing targets required for restore. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018: Unerwarteter Fehler bei der WriteRestoreGraphTask-Aufgabe. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018: System.ArgumentException: '1.0.0-pre.19.ci_server-test.2575d08' is not a valid version string. [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018: Parametername: value [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei NuGet.Versioning.NuGetVersion.Parse(String value) [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei NuGet.Commands.MSBuildRestoreUtility.GetVersion(IMSBuildItem item) [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei NuGet.Commands.MSBuildRestoreUtility.GetPackageSpec(IEnumerable`1 items) [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei NuGet.Commands.MSBuildRestoreUtility.GetDependencySpec(IEnumerable`1 items) [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei NuGet.Build.Tasks.WriteRestoreGraphTask.Execute() [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]
C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\qwa5r5sc.k3u.nugetrestore.targets(133,5): error MSB4018:    bei Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() [C:\Users\adm-nuc\AppData\Local\Temp\NuGetScratch\c2aijht0.m2r.nugetinputs.targets]

WARNUNG: Error reading msbuild project information, ensure that your input solution or project file is valid. NETCore and UAP projects will be skipped, only packages.config files will be restored.
Alle in "packages.config" aufgeführten Pakete sind bereits installiert.

现在我打开VisualStudio并加载项目xxx.sln文件,然后再次调用nuget restore命令,一切顺利:

D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls>nuget restore nestle.zls.sln
MSBuild auto-detection: using msbuild version '15.9.20.62856' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\bin'.
Alle in "packages.config" aufgeführten Pakete sind bereits installiert.
Committing restore...
Committing restore...
Assets file has not changed. Skipping assets file writing. Path: D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.mes\obj\project.assets.json
Restore completed in 70,66 ms for D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.mes\nestle.mes.csproj.
Assets file has not changed. Skipping assets file writing. Path: D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.common\obj\project.assets.json
Restore completed in 71,14 ms for D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.common\nestle.common.csproj.
Committing restore...
Assets file has not changed. Skipping assets file writing. Path: D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.server\nestle.zls.server\obj\project.assets.json
Restore completed in 80,07 ms for D:\Runner-Build-Directory\4b2335f7\0\customers\nestle\nestle-zls\nestle.zls.server\nestle.zls.server\nestle.zls.server.csproj.

NuGet Config files used:
    C:\Users\adm-nuc\AppData\Roaming\NuGet\NuGet.Config
    C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config

Feeds used:
    C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
    http://nuget.ad.xxx.de/
    https://api.nuget.org/v3/index.json
    https://www.nuget.org/api/v2

我已经安装了与我们第一台构建服务器完全相同的VisualStudio包,并设置了完全相同的环境变量/路径,但我无法使其工作。有人知道这是什么原因吗?
所以如果尝试构建项目时遇到了完全相同的问题。错误信息和在vs中加载项目后,一切都按预期工作!
NuGet版本:4.6.2.5055 MsBuild版本:15.9.20.62856(来自'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\bin')

你为什么要为 .wixproj 恢复一个 NuGet 包? - C.J.
你贴上的第一个示例中有很多错误。你需要逐个解决每个错误。 - C.J.
你使用的 nuget.exe 版本是哪个?我建议始终使用最新版本(目前为4.9.1),以确保它能找到正确的VS版本并使用正确的目标。 - Martin Ullrich
我正在恢复完整的解决方案,其中包括库和安装程序。我已经将版本添加到我的帖子中。 - Dominic Jonas
3个回答

2
MSBuild失败,但在VisualStudio中加载项目后,使用MSBuild可以正常工作。
我已经向NuGet团队报告了同样的问题,然后收到了以下回复:
这条消息是预期的,但不应阻止您进行还原。
在将来,一旦msbuild提供了跳过缺少目标的项目的方法,此消息将消失:Microsoft/msbuild#2471 此问题的票据:

https://github.com/NuGet/Home/issues/5940

如果这个阻止了你的恢复或者你在日志中看到了失败,请尝试更新构建服务器上的 nuget.exe 版本,如果仍然无法解决问题,您可以重新打开 5940 号问题并提供更多详细信息。
希望这能帮助到你。

1
使用 nuget v4.1 解决了还原 nuget 包的问题(这也是我在旧构建服务器上使用的版本)。现在我无法构建它。我将更新我的问题。 - Dominic Jonas
@DominicJonas,是的,NuGet v4.1可以解决这个问题,但降级应该只是解决方法而不是解决方案。 - Leo Liu
你说得对,它应该能够在最新版本中正常工作。但是现在我遇到了下一个问题。如果我想要构建,我会得到一个新的异常error NETSDK1004: .. project.assets.json not found. Try package restore。(https://help.appveyor.com/discussions/problems/17015-error-netsdk1004-assets-file-projectassetsjson-not-found-run-a-nuget-package-restore-to-generate-this-file)我将进一步调查并编辑我的问题。 - Dominic Jonas

0

添加此标志应该有所帮助,因为nuget.exe实用程序搜索最新的msbuild可能不总是有效。使用与VS相同的版本可以提供正确的确定性水平。

nuget restore xxx.sln -msbuildpath <your msbuild path>

例子:

nuget restore myProject.csproj -Source https://NuGet.org/api/v2/ -msbuildpath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"

-1
问题已经解决,但我无法详细解释原因。
为了解决错误信息,我使用dotnet重新构建了nuget文件。但是,我无法获取git分支...所以我进一步查看发现,我的服务器上运行自己的nuget包流和git的地方没有剩余磁盘空间。我清理了硬盘,然后就可以无错误地构建了。
因此,我认为这是错误和奇怪行为的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接